求两个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同理。
样例
# a.hosts
[root()@thatsit :: ~/scripts]# cat a.hosts
10.10.1.101
10.10.1.102
10.10.1.103
10.10.1.104
[root()@thatsit :: ~/scripts]#
# b.hosts
[root()@thatsit :: ~/scripts]# cat b.hosts
10.10.1.101
10.10.1.103
10.10.1.105
[root()@thatsit :: ~/scripts]#
# a.hosts ∩ b.hosts
[root()@thatsit :: ~/scripts]# sort a.hosts b.hosts | uniq -d
10.10.1.101
10.10.1.103
[root()@thatsit :: ~/scripts]#
# a.hosts ∪ b.hosts
[root()@thatsit :: ~/scripts]# sort a.hosts b.hosts | uniq
10.10.1.101
10.10.1.102
10.10.1.103
10.10.1.104
10.10.1.105
[root()@thatsit :: ~/scripts]#
# a.hosts - b.hosts
[root()@thatsit :: ~/scripts]# sort a.hosts b.hosts b.hosts | uniq -u
10.10.1.102
10.10.1.104
[root()@thatsit :: ~/scripts]#
# b.hosts - a.hosts
[root()@thatsit :: ~/scripts]# sort a.hosts a.hosts b.hosts | uniq -u
10.10.1.105
[root()@thatsit :: ~/scripts]#
参考链接:http://www.cnblogs.com/molong1208/p/5358509.html
求两个Linux文本文件的交集、差集、并集的更多相关文章
- 求两个排序数组的交集和并集----时间复杂度O(n+m)
问题: 给你两个排序的数组,求两个数组的交集. 比如: A = 1 3 4 5 7, B = 2 3 5 8 9, 那么交集就是 3 5,n是a数组大小,m是b数组大小. 思路: (1)从b数组遍历取 ...
- C# 集合的交集 差集 并集 去重
C# 集合的交集 差集 并集 去重 两个对象list,直接比较是不行的,因为他们存的地址不一样 需要重写GetHashCode()与Equals(object obj)方法告诉电脑 class Stu ...
- python-->(set /dict)交集 差集 并集 补集(功能用来做交差并补的)
# ### 集合 作用:交集 差集 并集 补集(功能用来做交差并补的) '''特征:自动去重 无序''' #定义一个空集合 setvar = set() #set()强制转换成一个空集合的数据类型 p ...
- js取两个数组的交集|差集|并集|补集|去重示例代码
http://www.jb51.net/article/40385.htm 代码如下: /** * each是一个集合迭代函数,它接受一个函数作为参数和一组可选的参数 * 这个迭代函数依次将集合的每一 ...
- java 交集 差集 并集
package com.wish.datastrustudy; import java.util.HashSet; import java.util.LinkedList; import java.u ...
- C# 数组比较--取得两个集合的交集,差集,并集的方法
方法关键字: 交集:Intersect 差集:Except 并集:Union 使用代码: , , , , }; , , , , }; var 交集 = arr1.Intersect(arr2).ToL ...
- javascript 数组求交集/差集/并集/过滤重复
最近在小一个小程序项目,突然发现 javscript 对数组支持不是很好,连这些基本的功能,都还要自己封装.网上查了下,再结合自己的想法,封装了一下,代码如下. //数组交集 Array.protot ...
- [转]list的交集,差集,并集
原文地址:https://www.cnblogs.com/changfanchangle/p/8966860.html 工作中用到了list的取差集,发现还是挺好用的.所以记录下. 需求 list的方 ...
- C# 交集 差集 并集
Intersect 交集,Except 差集,Union 并集 , , , , }; , , , , , }; var jiaoJi = oldArray.Intersect(newArray).To ...
随机推荐
- Team Foundation Server 开发流程管理管理研讨会
这周,和微软公司的朋友一起,受北京某金融企业邀请,为企业软件部门一个70多人的软件团队提供了一场基于Team Foundation Server的软件软件流程的技术研讨会.在研讨会中,培训基于微软Te ...
- LeetCode141:Linked List Cycle
题目: Given a linked list, determine if it has a cycle in it. Follow up: Can you solve it without usin ...
- C#判断本地文件,网络文件是否存在是否存在
File.Exists 方法 (String) 确定指定的文件是否存在. 命名空间: System.IO程序集: mscorlib(位于 mscorlib.dll) 参数 path Type: ...
- ORM到底是什么有何优缺点
转载地址:http://www.cnblogs.com/wgbs25673578/p/5140482.html ORM的概念, ORM到底是什么 一.ORM简介 对象关系映射(Obje ...
- docker 下载加速
执行这个命令: curl -SSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud. ...
- Python 获取秒级时间戳与毫秒级时间戳
原文:Python获取秒级时间戳与毫秒级时间戳 1.获取秒级时间戳与毫秒级时间戳 import time import datetime t = time.time() print (t) #原始时间 ...
- 程序媛计划——mysql基本操作
本文适用于mac 在官网上下载community 版mysql,选择dmy这种.在终端中安装好mysql. #进入mysql /usr/local/mysql/bin/mysql -uroot -p ...
- for循环、for in整理
for循环 作用:按照一定的规律,重复去做某件事情,此时我们就需要使用循环来处理了 例子1:倒着输出每一项 <script type="text/javascript"> ...
- jzoj5347
tj:80pts:維護f[i][j]表示當前第i個方塊必須選,且選了j個的最優解,設w[i]為第i個方塊長度 則可以枚舉上次選了第k個方塊,則f[i][j]=max{f[k][j-1]+w[i]*(i ...
- 一,memcached的基本概念
1,memcached的基本概念 memcached是一个高效的分布式内存对象缓存系统,它可以支持把各种php的数据(array,对象,基本数据类型)放入到它管理的内存中.简单的说,memcached ...