這段時間多虧大家的幫助,利用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...