FNR - 正在處理的當前記錄編號
FNR 包含正在處理的輸入檔案行的編號。在此示例中,你將看到 awk 在開始處理第二個檔案時再次從 1 開始。
一個檔案的示例
$ cat file1
AAAA
BBBB
CCCC
$ awk '{ print FNR }' file1
1
2
3
兩個檔案的示例
$ cat file1
AAAA
BBBB
CCCC
$ cat file2
WWWW
XXXX
YYYY
ZZZZ
$ awk '{ print FNR, FILENAME, $0 }' file1 file2
1 file1 AAAA
2 file1 BBBB
3 file1 CCCC
1 file2 WWWW
2 file2 XXXX
3 file2 YYYY
4 file2 ZZZZ
帶有兩個檔案的擴充套件示例
FNR
可用於檢測 awk 是否正在處理第一個檔案,因為 NR==FNR
僅對第一個檔案為真。例如,如果我們想要在他們的 FNR
上加入檔案 file1
和 file2
的記錄:
$ awk 'NR==FNR { a[FNR]=$0; next } (FNR in a) { print FNR, a[FNR], $1 }' file1 file2
1 AAAA WWWW
2 BBBB XXXX
3 CCCC YYYY
記錄來自 file2
的 ZZZZ
缺失,因為 FNR
對於 file1
和 file2
具有不同的最大值,並且沒有不同的 FNR
s 的連線。