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

转自:http://www.blogjava.net/jasmine214--love/archive/2011/01/25/343492.html

经常有这样的需求:两个文本文件要求取重复的行或只取不重复的,简单的情况下用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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值