A getline a meghívás helyén azonnal beolvassa a következő rekordot. Paraméter nélkül a $0-át teszi egyenlővé azzal, de ha kap egy változónevet paraméterként, akkor az adott változó lesz egyenlő a prompt beolvasott rekorddal. A getline végrehajtásával a fájlmutató és a NR/FNR változók ugyanúgy mozognak, mint az automatikus, "végtelen ciklusos" olvasáskor.
awk '
# Ha a mezők száma nem éri el a 3-at, beolvassuk x-be a következő sort*,
# és $0 értékének végére tesszük a pótlólag beolvasott részt.
# Azzal, hogy $0-nak értéket adunk, egyúttal kikényszerítjük, hogy
# az új $0 mezőkre törtdelése is megtörténjék.
# Ha eleve eléri a 3-at a mezők száma, akkor az a rész mintha itt sem volna.
NF < 3 { getline x; $0 = ($0 x) }
# Az első mezőben a mező végén álló architektúranevet
# (a megelőző ponttal együtt) lecseréljük az alábbi
# részekből konkatenált sztringre:
# 1: "-"
# 2: a 2. mező
# 3: az a sztring, amit architektúraként megtaláltunk a reguláris
# kifejezéssel (a.m.: ".x86_64" vagy ".noarch")
# Ezáltal az első mező értéke az lesz, amit látni szeretnénk,
# már csak ki kell írni.
{ sub(/\.(x86_64|noarch)$/, "-" $2 "&", $1); print $1 }'
* Azzal a feltételezéssel él, hogy egy getline-nal már mindenképpen meglesz a 3 mező. Minimális módodítással elérhető, hogy akkor is működjön a többi rész, ha soronként csak egy mezőt talál, vagy akár üres sort a szabályosnak tekintett, 3-mezős sorok mellett.