求两个文件的交集 并集 差集

求两个Linux文本文件的交集、差集、并集

一、交集

sort a.txt b.txt | uniq -d

二、并集

sort a.txt b.txt | uniq

三、差集

a.txt-b.txt:

sort a.txt b.txt b.txt | uniq -u

b.txt - a.txt:

sort b.txt a.txt a.txt | uniq -u

四、相关的解释

使用sort可以将文件进行排序(sort排序是为了管道交给uniq进行处理,uniq只能处理相邻的行),可以使用sort后面的参数,例如 -n 按照数字格式排序,例如 -i 忽略大小写,例如使用-r 为逆序输出等

uniq为删除文件中重复的行,得到文件中唯一的行,参数-d 表示的是输出出现次数大于1的内容;参数-u表示的是输出出现次数为1的内容;那么对于上述的求交集并集差集的命令做如下的解释:

sort a.txt b.txt | uniq -d:将两个文件进行排序,uniq使得两个文件中的内容为唯一的,使用-d输出两个文件中次数大于1的内容,即是得到交集

sort a.txt b.txt | uniq :将两个文件进行排序,uniq使得两个文件中的内容为唯一的,即可得到两个文件的并集

sort a.txt b.txt b.txt | uniq -u:将两个文件排序,最后输出a.txt b.txt b.txt文件中只出现过一次的内容,因为有两个b.txt所以只会输出只在a.txt出现过一次的内容(b.txt的内容至少出现两次),即是a.txt-b.txt差集;对于b.txt-a.txt同理。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问题描述 对于两个同处在一个集群的hive表,进行文件或者数据的对比是非常方便的,直接写个关联查询就可以搞定。然而...
    那只媛阅读 6,732评论 0 5
  • 网上转的,不错,比使用awk容易点 给定两个文件 a.txt 和 b.txt ,每行是一个记录(假设没有重复),要...
    予早阅读 1,335评论 0 0
  • 基础命令 主要的命令和快捷键 Linux系统命令由三部分组成:cmd + [options]+[operation...
    485b1aca799e阅读 1,139评论 0 0
  • 别高冷了,快笑一个! 一个女人的笑容可以让一个家庭温馨愉快,让身边的人感觉温暖亲切! 一个男人的笑容可以让爱他们的...
    虚竹白驹阅读 296评论 0 1
  • 尽数无数的诗词我唯独偏爱与挚爱那一句“人生若只如初见”,这一句是很多人都钟爱的。也许这一句说尽了世人们内心中对...
    少爷HH阅读 856评论 0 6