2016年6月13日 星期一

Linux shell:刪除兩個檔案相同的地方(How to find and delete duplicate lines in two files in vi editor or linux?)

假設有兩的檔案A,B
A:
11111
22222
33333
44444

B:
11111
33333
55555

運算後產生
A1: (= A - A∩B)
22222
44444 

B1: (= B - A∩B)
55555
 -------------------------------------------------------------------------------------
解1:
1.編輯 del.awk 檔案:(內容如下)
NR==FNR {
    a[$0]++
    next
}

! ($0 in a) {
    print
}
 
2. 輸入指令:
awk -f del.awk A B > B1
awk -f del.awk B A > A1 
 
解2: 
grep -vf A B > B1
grep -vf B A > A1

參考資料:How to find and delete duplicate lines in two files in vi editor or linux

沒有留言:

張貼留言