Posted on 2011-01-25 14:05
幻海藍(lán)夢 閱讀(3010)
評論(0) 編輯 收藏 所屬分類:
Linux
經(jīng)常有這樣的需求:兩個文本文件要求取重復(fù)的行或只取不重復(fù)的,簡單的情況下用sort和uniq來處理是非常方便的:
利用現(xiàn)存兩個文件,生成一個新的文件
1. 取出兩個文件的并集(重復(fù)的行只保留一份)
2. 取出兩個文件的交集(只留下同時存在于兩個文件中的文件)
3. 刪除交集,留下其他的行
1. cat file1 file2 | sort | uniq
2. cat file1 file2 | sort | uniq -d
3. cat file1 file2 | sort | uniq -u
例如:
[zzx@test55 ~]$ cat a
1
2
3
[zzx@test55 ~]$ cat b
23
2
3
4
5
6
排序:
[zzx@test55 ~]$ cat a b|sort
1
2
2
23
3
3
4
5
6
去重(并集):
[zzx@test55 ~]$ cat a b|sort|uniq
1
2
23
3
4
5
6
交集:
[zzx@test55 ~]$ cat a b|sort|uniq -d
2
3
去除交集后的并集
[zzx@test55 ~]$ cat a b|sort|uniq -u
1
23
4
5
6
差集可以用以下兩種方法實現(xiàn):
grep -F -f listb lista -v
sort B B A | uniq -u
原文:http://zhaizhenxing.blog.51cto.com/643480/134556/