awk 交集 並集 累加

2021-09-01 12:04:47 字數 961 閱讀 8110

這段時間多虧大家的幫助,利用awk命令解決了很多問題,在此也總結自己實際運用到的問題,方便其他童鞋一起學習shell。

問題一:

如果兩個檔案行數相同,只是希望逐行合併

方法一$ paste -d "\t" file_1 file_2

複製**

方法二$ awk 'nr==fnrnr>fnr' file_1 file_2

複製**

方法三$ awk '' file_1

複製**

問題二:

兩個檔案之間單純求記錄交集

方法一(需要先去除重覆記錄,兩個檔案的格式必須相同,尤其要注意每行結尾的空格,換行符)

$ sort file_1 file_2 |uniq -d

複製**

方法二(file_1大於file_2的記錄數,不適合記錄過多的檔案,也需要提前去重複)

$ grep -w -f file_1 file_2|sort|uniq

複製**

兩種方法可以一起用,從而檢查結果是否準確

方法三(如果需要匹配超過兩個的檔案,就修改「==2」的數值為檔案個數)

$ awk '!b[$1,argind]++' file_1 file_2

複製**

問題三:

累加第二列的數值

方法一(無條件累加)

$ awk 'end' file

複製**

方法二(若第三列的內容相同,則累加對應記錄的第二列數值)

awk 'end' file

複製**

方法三(對其他列的內容進行限制篩選以後累加第二列的數值)

$ awk '$4=="abc" && $5>=100 && $6<=500end' file

複製**

方法四(若第三列,第四列內容相同,則累加第二列的數值,並將結果公升序輸出)

$ awk 'end' file|sort

複製**

交集並集差集

1 內連線 select from student a inner join sc b on a.sno b.sno 左連線 select from student a left join sc b on a.sno b.sno 差集 select sno from student except s...

python 並集交集

set是用來去重的。在list裡使用union函式。這種方式不適用於元素為字典的。list set a set b 這是求差集 所以交集就是並集和ab的差集。import random defgetrand n return random.randint 0,100 for i in range i...

shell bash 交集 並集 差集

方法一 直接用檔名 取兩個文字檔案的並集 交集 差集 並 sort m sort file1 uniq sort file2 uniq uniq 交 sort m sort file1 uniq sort file2 uniq uniq d 差 file1 file2 sort m sort fil...