awk合併檔案例項以及命令解釋

2021-09-26 20:33:27 字數 671 閱讀 5382

[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...