前言
1、并集
对于两个给定集合A、B,由两个集合所有元素构成的集合,叫做A和B的并集。
记作:AUB 读作“A并B”
例: {3,5}U{2,3,4,6}= {2,3,4,5,6}
2、交集
对于两个给定集合A、B,由属于A又属于B的所有元素构成的集合,叫做A和B的交集。
记作: A∩B 读作“A交B”
例: A={1,2,3,4,5},B={3,4,5,6,8},A∩B={3,4,5}
3、差集
记A,B是两个集合,则所有属于A且不属于B的元素构成的集合,叫做集合A减集合B(或集合A与集合B之差),类似地,对于集合A、B,把集合{x∣x∈A,且x∉B}叫做A与B的差集。
记作:B-A
操作
shell 中求交集、差集、并集主要用到两个命令:sort、uniq
sort 可以将给定的数据或文件进行排序,排序后交由 uniq 处理(因为 uniq 只能处理相邻的重复行,如果不排序,将会造成统计误差)。sort 后面可以跟一些参数,例如 :-n 按照数字格式排序,-i 忽略大小写,-r 逆序输出等。可以通过 sort --help 查看更多。
uniq 可以删除数据中重复的行,得到唯一的行,可用于求并集。其中,参数-d 表示只打印重复的行(即出现次数大于1的内容),可用于求交集;参数 -u 表示只打印独有的行(即出现次数为1的内容),可用于求差集。可以通过 uniq --help 查看更多
1、并集
sort a.txt b.txt | uniq
去掉文件 a.txt 和 b.txt 中重复的行(重复内容会保留一份,相当于去除冗余内容)。
2、交集
sort a.txt b.txt | uniq -d
只打印文件 a.txt 和 b.txt 中重复的行。
3、差集
sort a.txt b.txt b.txt | uniq -u
只打印文件 a.txt,b.txt 和 b.txt 中独有的行,由于 b.txt 出现两次,所以 b.txt 中内容至少出现两次,剩下的就是 a.txt 中未出现在 b.txt 中的内容,即 a.txt 去掉 a.txt 和 b.txt 的交集。