Linux 取两个文件的交集、差集、并集
一、交集
sort a.txt b.txt | uniq -d (-d仅显示重复的行列)
二、并集
sort a.txt b.txt | uniq
三、差集
sort a.txt b.txt | uniq -u (-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同理。
五、举例
a.txt [root@ scripts]# cat a.txt 10.10.1.101 10.10.1.102 10.10.1.103 10.10.1.104 b.txt [root@ scripts]# cat b.txt 10.10.1.101 10.10.1.103 10.10.1.105 交集: [root@ scripts]# sort a.txt b.txt | uniq -d 10.10.1.101 10.10.1.103 并集: [root@ scripts]# sort a.txt b.txt | uniq 10.10.1.101 10.10.1.102 10.10.1.103 10.10.1.104 10.10.1.105 差集: [root@ scripts]# sort a.txt b.txt | uniq -u 10.10.1.102 10.10.1.104 10.10.1.105 详解:参数-u表示的是输出出现次数为1的内容,b.txt的内容至少出现两次,即是a.txt-b.txt差集: [root@ scripts]# sort a.txt b.txt b.txt| uniq -u 10.10.1.102 10.10.1.104 详解:参数-u表示的是输出出现次数为1的内容,a.txt的内容至少出现两次,即是b.txt-a.txt差集: [root@ scripts]# sort a.txt a.txt b.txt| uniq -u 10.10.1.105
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」