awk多檔案處理

2021-08-31 04:15:51 字數 533 閱讀 2908

a.txt內容如下:

a 150

b  200

c 100

b.txt內容如下:

abcd a 12.5

bbbb b 35

cccc c 42

dddd d 21

想要通過a.txt、b.txt得到ba.txt

abcd a 12.5 150

bbbb b 35 200

cccc c 42 100

dddd d 21

用awk簡單搞定awk 'nr==fnr' a.txt  b.txt  > ba.txt

解釋:nr:讀入的記錄總數;fnr:當前檔案的讀入記錄數(行數)

讀a.txt時,nr=fnr,都是3行,此時將a的第二個域得內容賦值到map中,其中key為第乙個域的值,因為b的第二個域跟a的第乙個域是一樣的值,賦值完後,直接next不進行後面的{}裡面的輸出。

當a讀取完後,讀取b時,nr==fnr不成立,所以執行第二個{}裡的列印,因此得出結果。

shell功能就是強大啊~~~

AWK實現多檔案讀取和處理

當我們使用awk整合檔案的時候,如果是兩個檔案,我們經常會用nr fnr和nr fnr兩個來指定讀取第乙個或者是第二個檔案,但是如果涉及到三個及以上檔案這種方式就不適用,除非我們使用前面兩個檔案的方式,生成第三者,在用第三者進行整合,也是可以實現,但是這樣子多了個第三者,而且顯得比較笨拙。我們可以使...

awk處理日誌檔案

split出所需要的那一段文字,可以split多次,下標從1開始 split src,dst,分隔符 將所需要的鍵值對得到,並按 tab 分割,這裡只需要乙個,放在變數中 awk f print 在每個檔案中對2中得到的不同值 還是鍵值對,但鍵是相同的 進行統計 awk end 對3中得到的資料進行...

awk 處理資料檔案

一 資料處理 1 程式 begin end a.dat b.dat merge.dat merge.dat 0 100 0 100 1 99 3 102 2 93 0 93 3 90 2 92nr fnr,只有當處理第乙個檔案a.dat時,這個值才返回true,所以相應的處理是把第二列的數賦值給陣列...