nr,表示awk開始執行程式後所讀取的資料行數.
fnr,與nr功用類似,不同的是awk每開啟乙個新檔案,fnr便從0重新累計.
下面看兩個例子:
1,對於單個檔案nr 和fnr 的 輸出結果一樣的 :
# awk '' file1
1 a b c d
2 a b d c
3 a c b d
#awk '' file1
1 a b c d
2 a b d c
3 a c b d
2,但是對於多個檔案 :
# awk '' file1 file2
1 a b c d
2 a b d c
3 a c b d
4 aa bb cc dd
5 aa bb dd cc
6 aa cc bb dd
# awk '' file1 file2
1 a b c d
2 a b d c
3 a c b d
1 aa bb cc dd
2 aa bb dd cc
3 aa cc bb dd
在看乙個例子關於nr和fnr的典型應用:
現在有兩個檔案格式如下:
#cat account
張三|000001
李四|000002
#cat cdr
000001|10
000001|20
000002|30
000002|15
想要得到的結果是將使用者名稱,帳號和金額在同一行列印出來,如下:
張三|000001|10
張三|000001|20
李四|000002|30
李四|000002|15
執行如下**
#awk -f \| 'nr==fnr' account cdr
注釋:由nr=fnr為真時,判斷當前讀入的是第乙個檔案account,然後使用迴圈將account檔案的每行記錄都存入陣列a,並使用$2第2個字段作為下標引用.
由nr=fnr為假時,判斷當前讀入了第二個檔案cdr,然後跳過,對第二個檔案cdr的每一行都無條件執行,此時變數$1為第二個檔案的第乙個字段,與讀入第乙個檔案時,採用第乙個檔案第二個字段$2為陣列下標相同.因此可以在此使用a[$1]引用陣列。
awk的NR和FNR區別
nr,表示awk開始執行程式後所讀取的資料行數.fnr,與nr功用類似,不同的是awk每開啟乙個新檔案,fnr便從0重新累計.下面看兩個例子 1,對於單個檔案nr 和fnr 的 輸出結果一樣的 awk file1 1 a b c d 2 a b d c 3 a c b d awk file1 1 a...
awk中的NR和FNR的區別
一,nr和fnr的不同 nr 表示當前記錄數 fnr 也表示當前記錄數,但是fnr的作用域只在乙個檔案內.如果重新開啟檔案,fnr會從1開始.二,例項說明 1,測試檔案aaa,cccc root blackghost test2 cat aaa 測試檔案aaa 1111 23434 zhang ho...
AWK的NR和FNR詳解
書上說 nr,表示awk開始執行程式後所讀取的資料行數.fnr,與nr功用類似,不同的是awk每開啟乙個新檔案,fnr便從0重新累計.下面看兩個例子 1,對於單個檔案nr 和fnr 的 輸出結果一樣的 awk file1 1 a b c d 2 a b d c 3 a c b d awk file1...