原!linux comm命令文件 比較 輸出交集,差集。

文件內容大體以下:spa

112805|300011222483|OL海12卓|47397c33e36cdbed26637c50dd305973|2019-08-06 10:50:13|登B錄123|succ|
221805|3002228346|12車安S卓|ce125ad05675ac2c73de325d4d573707|2019-08-06 10:49:20|號A碼校驗(SDK)123|succ|3d

........排序

 

 

問題:線上話單文件第三方傳來的文件1已經計費過,可是因爲故障,文件1內容不全,後面給了全量文件2,故要排除文件2中 與 文件1共有內容行,即排除文件1中已經計費過的全部內容行。file

現有文件:1.txt  2.txt ,如今要得到只在2.txt中有的內容行。方法

利用comm命令d3

comm -3 file1 file2
這個方法看起來最簡單。命令comm的功能就是,逐行比較兩個排好序的文件,默認輸出有三列:只在file1中有的行、只在file2中有的行、在file1和file2中共有的行。sort

有參數-1 -2 -3,分別來抑制輸出對應的列。例如在咱們的方法二中,實用-3參數,不輸出file1和file2中共有的部分。即能達到咱們本文的目的。db

 

所以先進行排序:文件

sort 1.txt -o 1_sort.txtco

sort 2.txt -o 2_sort.txt

再利用comm命令輸出只在file2中有的行(差集):

comm -1 -3 1_sort.txt  2_sort.txt > only_2_have_sort.txt

相關文章
相關標籤/搜索