[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 は複数ファイルを通して読み込んだ行数を数え続けます。

awk Shell command