linux下awk的關聯陣列

2021-07-09 22:35:12 字數 553 閱讀 6602

昨天看了同事的乙個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 環境中現有的功...