Mindkettő majdnem ugyanazt csinálja:
awk '/ [A-Z]+$/ {print substr($0,1,12) substr($0,147,3) }'
ruby -n -e 'puts $_[0,12]+$_[146,3] if /[A-Z]{3}$/'
Vagyis kiírja az input sor egy részét, de csak ha a sor utolsó három karaktere (az awk esetében – ezért csak majdnem - csak az utolsó space után legalább egy karakter a sor végéig) nagybetűs. És akkor melyiket szeressem?
Az awk ennyit fut:
real 0m6.671s
user 0m3.845s
sys 0m0.547s
A ruby meg ennyit:
real 0m8.000s
user 0m6.165s
sys 0m0.634s
Persze ugyanarra a szép nagy fájlra.
A válasz egyszerű. Az awk szinte mindenhol van. Ez jó. Ruby csak ott, ahová direkt telepítettem. De az awk-ban csak akkor tudom pontosan megadni azt hogy három karaktert akarok pontosan ellenőrizni, ha gawk-t használok --re-interval kapcsolóval. Vagy ha így adom meg: / [A-Z][A-Z][A-Z]$/.
Szóval a ruby nekem erre a feladatra jobban tetszett.
Amúgy meg tök mindegy, csak kész legyen.