末尾ひとつ前のフィールドを取得

`awk`で表題の通り。

■ 環境

  • awk 3.1.7
  • CentOS 6.7

■ awk

`awk`で末尾のフィールドの値を取得することがある。例えば下記のようなCSVである場合。

$ cat test.csv
1,aaa,bbb,ccc
2,aiueo,aiueo,aiueo
3,test1,test2,test3
$
$ awk -F, '{print $NF}'
ccc
aiueo
test3
$

フィールド数を取得できる”NF“と”$“で末尾の値を取得している。フィールド数がそれほどなければ末尾ひとつ前のフィールドの値もわかりやすいが、これ何番目だ?と数えるのが億劫な場合は下記で取得することができる。

$ awk -F, '{print $(NF-1)}' test.csv
bbb
aiueo
test2
$

以上。