昨天看了同事的乙個shell指令碼,如下:
awk 'nr==fnra[$1]==0' ./a.txt ./b.txt
作用是:列印出b.txt第一列中不在a中行,初一看,不是很懂,shell指令碼沒有系統的學過,平時用也只是一些簡單的執行下可執行程式,跑下定時任務
nr和fnr,nr列印行數,fnr同樣是列印行數,區別是後者每次開啟乙個檔案時都會置0
a.txt
b.txt
awk '' a.txt b.txt
1 1 123
2 2 456
3 1 456
4 2 4567
5 3 90
看下這行語句,看怎麼實現的吧
nr==fnr 表示開啟第乙個檔案,建立乙個關聯資料a[$1]=1,即將檔案一中第一列的每一行放到乙個關聯陣列中了
這是第乙個檔案的處理,再看下第二個檔案
a[$1]==0如果a[$1]==0即對於第二個檔案中,元素不在關聯陣列中則列印出來!
這樣乙個簡單的語句就實現了功能,也有其他更簡單的方法 比如grep -vwf a.txt b.txt
linux 陣列與關聯陣列
bin bash file name 陣列與關聯陣列 usage 備忘 定義乙個陣列 array var1 test1 test2 test3 定義乙個陣列 array var2 0 p1 array var2 1 p2 echo array var1 0 index1 1 echo array v...
shell 之awk 關聯陣列高階應用
最近由於資料遷移過,有些使用者資訊需要再次確認下,也許資料量比較大,但是需要最終確認的比如說是使用者id和其對應的使用者積分數,這樣就會導致出現文字a 老的資料 文字b 新的資料 比如 1101 1231102 1111103 1451104 152 這是文字a.txt 文字b.txt如下 1101...
技巧 AWK 關聯陣列的乙個應用
本文通過乙個例項闡述了 awk 關聯陣列的應用,讀者可以通過這篇文章得到理論和實踐兩方面的知識,例子很簡單,希望這篇文章能起到拋磚引玉的作用。awk awk 關聯陣列 associative arrays awk是一種優秀的文字處理工具,它不僅是 linux 中也是很多其它 unix 環境中現有的功...