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
