[root@tech tmp]# cat account
a|000002
b|000001
c|000003
d|000004
[root@tech tmp]# cat cdr
000001|20
000002|45
000003|25
000004|60
要合併這兩個檔案,可以使用如下命令:
awk -f | 『nr==fnr 』 cdr account
執行結果是:
a|000002|45
b|000001|20
c|000003|25
d|000004|60
當nr=fnr為真時,判斷當前讀入的是第乙個檔案account,然後使用迴圈將cdr檔案的每行記錄都存入陣列a,並使用cdr檔案第1個字段作為下標引用.
當nr=fnr為假時,判斷當前讀入了第二個檔案account,然後跳過,對第二個檔案account的每一行都無條件執行,此時變數$2為第二個檔案的第二個字段,與讀入第乙個檔案時,採用第乙個檔案第乙個字段$1為陣列下標相同.因此可以在此使用a[$2]引用陣列。
這種用法主要用於檔案記錄沒有排序,或者需要匹配的字段不是第乙個欄位的情況下。
對於檔案已經有序,且兩個檔案的匹配欄位都是第一列的場景,使用join命令更加方便。
awk 逐行合併檔案
這段時間多虧大家的幫助,利用awk命令解決了很多問題,在此也總結自己實際運用到的問題,方便其他童鞋一起學習shell。如果兩個檔案行數相同,只是希望逐行合併 方法一 paste d t file 1 file 2 複製 方法二 awk nr fnrnr fnr file 1 file 2 複製 方法...
awk命令常用例項
1 簡單 awk 101 file 顯示檔案file中包含101的匹配行。awk 101 105 file 顯示檔案file中包含101或105的行。awk 1 5 file 顯示檔案file中第1個字段為5的行。awk 1 ct file 顯示檔案file中第1個字段為ct的行 awk 1 2 1...
awk命令常用例項
本文編輯整理自 1 簡單 awk 101 file 顯示檔案file中包含101的匹配行。awk 101 105 file 顯示檔案file中包含101或105的行。awk 1 5 file 顯示檔案file中第1個字段為5的行。awk 1 ct file 顯示檔案file中第1個字段為ct的行 a...