jasmine214--love

只有当你的内心总是充满快乐、美好的愿望和宁静时,你才能拥有强壮的体魄和明朗、快乐或者宁静的面容。
posts - 731, comments - 60, trackbacks - 0, articles - 0

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

Posted on 2011-01-25 14:05 幻海蓝梦 阅读(3007) 评论(0)  编辑  收藏 所属分类: Linux
经常有这样的需求:两个文本文件要求取重复的行或只取不重复的,简单的情况下用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

原文:http://zhaizhenxing.blog.51cto.com/643480/134556/

只有注册用户登录后才能发表评论。


网站导航: