> nem látom benne, hogy hol különbözteti meg a két illetve három részből álló sorokat
Sehogy. Mind a két esetben az utolsó oszlopban van a hostname, ez a $1, $2, $3, ... mintájára a $NF (NF = number of fields, adott sorbeli oszlopok száma, előtte egy $-ral az annyiadik - azaz - utolsó oszlop a sorban)
> nem látom benne, .... és hogy hogy jön ki az állományból a host neve és az időpont. :-)
Az első oszlop pedig az időpont, azaz amikor az első felében azt mondom: m[ $NF ] = $1, akkor az m (machine) nevű tömb $NF nevű eleme - azaz a gépnév az index - értékül kapja a $1-ben levő timestamp-et. Utána az "END { for ( i in m) ..." ciklus az END miatt a feldolgozás után végigmegy a tömb indexein - azaz a gépneveken - ez van az i változóban valami random sorrendben; és kiírja az m[ i ] és az i értékeket. i értéke a gépnév, m[i] a TS.
Azaz ugyanaz, mint amit a python kódban ír a kolléga, de neki fájlokat kell nyitogatni, meg minden csacskaságot, nekem meg gyárilag megcsinálja az awk :-)