スポンサーリンク

awkで最終行を取得する方法

※awkの使い方をまとめて一覧にしました。
参考:awk入門-使い方まとめ一覧-

awkには行数を取得するNR変数がありますが、
最終行を取得する変数がなかったので、
少し試行錯誤してみました。

結論としては、wc -l で行数を取得して、

EOL=$(cat in.txt | wc -l)

参考:引数でawkに値を渡す方法:-vオプションを使う

-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

スポンサーリンク