linux 内核 交集,Linux集合操作命令(交集、差集)

man手册

[hadoop@master ~]$ man comm

NAME

comm - compare two sorted files line by line

SYNOPSIS

comm [OPTION]... FILE1 FILE2

DESCRIPTION

Compare sorted files FILE1 and FILE2 line by line.

With no options, produce three-column output. Column one contains lines unique to FILE1, column two contains

lines unique to FILE2, and column three contains lines common to both files.

-1 suppress column 1 (lines unique to FILE1)

-2 suppress column 2 (lines unique to FILE2)

-3 suppress column 3 (lines that appear in both files)

以上是comm命令man手册的说明,要注意两个文件必须是排序和唯一(sorted and unique)的,默认输出为三列,第一列为是A-B,第二列B-A,第三列为A交B。

示例文件

A.txt文件代表集合A,B.txt代表集合B,即:A={a,b,g,c},B={f,b,a,r}

[hadoop@master test]$ cat A.txt

a

b

g

c

[hadoop@master test]$ cat B.txt

f

b

a

r

直接运行

先来看看直接运行comm命令的效果

[hadoop@master test]$ comm A.txt B.txt

a

b

f

comm: 文件2 没有被正确排序

b

a

g

comm: 文件1 没有被正确排序

c

r

输入文件应该先进行排序,并且保证唯一。

可以看到,默认输出为三列,第一列为是A-B即只出现在A中而不出现在B中的元素,第二列B-A即只出现在B中而不出现在A中的元素,第三列为A交B即既出现在A中又出现在B中的元素。

[hadoop@master test]$ comm < (sort A.txt | uniq) < (sort B.txt | uniq)

-bash: syntax error near unexpected token `('

[hadoop@master test]$ comm < (sort A.txt | uniq)

-bash: syntax error near unexpected token `('

#A={a,b,g,c},B={f,b,a,r}。第一列为A-B={c,g};第二列为B-A={f,r},第三列为A交B={a,b}

[hadoop@master test]$ comm

a

b

c

f

g

r

只求差集或交集

使用comm命令行参数:

-1 不显示只在第1个文件里出现过的列。

-2 不显示只在第2个文件里出现过的列。

-3 不显示只在第1和第2个文件里出现过的列。

#求A-B

[hadoop@master test]$ comm -23

c

g

#求B-A

[hadoop@master test]$ comm -13

f

r

#求你A交B

[hadoop@master test]$ comm -12

a

b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值