Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

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 }

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