文件內容大體以下: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