您的位置:首页 > 其它

用uniq实现文件的并集和交集

2008-06-27 16:59 232 查看
经常有这样的需求:两个文本文件要求取重复的行或只取不重复的,简单的情况下用sort和uniq来处理是非常方便的:
利用现存两个文件,生成一个新的文件

1. 取出两个文件的并集(重复的行只保留一份)

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

差集可以用以下两种方法实现:
grep -F -f listb lista -v
sort B B A | uniq -u
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息