[awk] 複数ファイルを処理するときファイルごとの行番号を取得する
作成日: 2026年09月19日
awk の組み込み変数 FNR を使用すると、複数ファイルを処理するときにファイルごとの行番号を取得できます。
例えば、fruits.txt を下記の内容で作成します。
apple
orange
続いて、vegetables.txt を下記の内容で作成します。
carrot
tomato
下記のコマンドを実行します。
awk '{print FNR, $0}' fruits.txt vegetables.txt
実行結果は下記のとおりです。
1 apple
2 orange
1 carrot
2 tomato
FNR には現在処理しているファイル内の行番号が入ります。次のファイルの処理が始まると、FNR は 1 から数え直されます。
一方、NR は複数ファイルを通して読み込んだ行数を数え続けます。