スポンサーリンク

awkの組み込み変数NFで列(レコード)数を取得

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

NF変数で、処理中の列数が取得できます。

※MACターミナル(BSD系)での動作確認です。

参考:行数に応じた処理はNR変数が使えます。
参考:awkのNR変数で行数に応じた処理をする

例えば、下記のin.txtがあったとします。

 $ cat in.txt 
L1,1,end
L2,2,end
L3,3,end
L4,4,end

print出力で、NF変数を出力してみます。
先頭に処理中の列数を付与してみました。
 $ cat in.txt | awk -F"," '{print NF "列で構成" ,$0}'
3列で構成 L1,1,end
3列で構成 L2,2,end
3列で構成 L3,3,end
3列で構成 L4,4,end

スポンサーリンク

NF変数を使って欠損している列が存在する行を見つける

欠損がおきているかをチェックする時にたまに使っています。

例えば、下記のin.txtがあったとします。

 $ cat in.txt 
L1,1,end
L2,2,end
L3,3
L4,4,end

下記がサンプルコードになります。
3列で構成されていない行数をprint出力します。
 $ cat sample.awk 
#!/bin/sh
cat in.txt | awk '		
	BEGIN{
		FS = ","
	}
	{
		if(NF != 3){
			print NR "行目が3列になっていません"
		}
	}
'

下記が実行結果になります。
 $ ./sample.awk 
3行目が3列になっていません

スポンサーリンク