awkで最終行を取得する方法
awkには行数を取得するNR変数がありますが、
最終行を取得する変数がなかったので、
少し試行錯誤してみました。
結論としては、wc -l で行数を取得して、
EOL=$(cat in.txt | wc -l)
-vオプションで、awkの引数で入力しました。
cat in.txt | awk -v "EOL=$EOL"
サンプルコード
例えば、下記のin.txtがあったとします。
$ cat in.txt 2019,1 2019,2 2019,3 2019,4
下記がサンプルコードになります。
$ cat sample.awk #!/bin/sh EOL=$(cat in.txt | wc -l) cat in.txt | awk -v "EOL=$EOL" ' BEGIN{ FS = "," } { if(NR == EOL){ print $0 } } '
下記が実行結果になります。
$ ./sample.awk 2019,4