linux shell下求文件的交集、并集、差集

A.txt

1111  
1234  
2222  
3333            

B.txt

1111  
1234   
3333 
4444

有两个方法,一个是comm命令,一个是grep命令

comm命令

comm(选项)(参数)

选项

-1:不显示在第一个文件中出现的内容 ; 
-2:不显示在第二个文件中出现的内容; 
-3:不显示同时在两个文件中都出现的内容。

参数

文件1:指定要比较的第一个有序文件; 
文件2:指定要比较的第二个有序文件。

comm命令默认输出为三列,第一列为是A-B(在A中但不在B中),第二列B-A,第三列为A交B。-1代表不显示第一列,依次类推。

交集

comm -12  A.txt B.txt
或者
cat a b | sort | uniq -d > c   # c is a intersect b 交集

如果A B 无序,可以使用下面命令

comm <(sort a.txt|uniq ) <(sort b.txt|uniq )  

差集

A-B

comm -23 A.txt B.txt

grep命令

以A.txt为范式样本,grep查找符合该范式条件的文本内容

grep -F -f A.txt B.txt | sort | uniq  

B-A

grep -F -v -f A.txt B.txt | sort | uniq  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值