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/