Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

AWKで末尾からN個目のフィールドを得たい場合、$(NF - N)とするだけ

AWKで末尾からN個目のフィールドを得たい場合……rubyでいえば

ary[-2]

何のことはなく、フィールド数を示すNF変数から、任意の数値を引くだけです。

実際のところ

a~fまでの文字のうち、最後から2番目のレコードを得る場合は以下のようにします。

$ echo 'a b c d e f' | awk '{print $(NF - 2)}'
d

このように、$NUMのNUMは括弧囲いする事で数式を計算することができます。
また、for文で使う変数も使うことができるので

for( i = 0; i <= NF; i++) { print $i }

のような運用も可能です。