SHELL NR與FNR區別

hurp_oracle發表於2015-08-11

NR,表示awk開始執行程式後所讀取的資料行數.

FNR,與NR功用類似,不同的是awk每開啟一個新檔案,FNR便從0重新累計.

下面看兩個例子:

1,對於單個檔案NR 和FNR 的 輸出結果一樣的 :

# awk '{print NR,$0}' file1 
1 a b c d
2 a b d c
3 a c b d

#awk '{print FNR,$0}' file1 
1 a b c d
2 a b d c
3 a c b d 

2,但是對於多個檔案 :

# awk '{print NR,$0}' 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 '{print FNR,$0}' 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

執行如下程式碼

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29446986/viewspace-1768236/,如需轉載,請註明出處,否則將追究法律責任。

相關文章