求两个Linux⽂本⽂件的交集、差集、并集
⼀、交集
b.txt | uniq -d
⼆、并集
b.txt | uniq
三、差集
<-
<:
b. | uniq -u
<-a.txt:
a. | uniq -u
四、相关的解释
使⽤sort可以将⽂件进⾏排序(sort排序是为了管道交给uniq进⾏处理,uniq只能处理相邻的⾏),可以使⽤sort后⾯的参数,例如 -n 按照数字格式排序,例如 -i 忽略⼤⼩写,例如使⽤-r 为逆序输出等
uniq为删除⽂件中重复的⾏,得到⽂件中唯⼀的⾏,参数-d 表⽰的是输出出现次数⼤于1的内容;参数-u表⽰的是输出出现次数为1的内容;那么对于上述的求交集并集差集的命令做如下的解释:
b.txt | uniq -d:将两个⽂件进⾏排序,uniq使得两个⽂件中的内容为唯⼀的,使⽤-d输出两个⽂件中次数⼤于1的内容,即是得到交集
b.txt | uniq :将两个⽂件进⾏排序,uniq使得两个⽂件中的内容为唯⼀的,即可得到两个⽂件的并集
b. | uniq -u:将两个⽂件排序,最后输出a. b.txt⽂件中只出现过⼀次的内容,因为有两个b.txt所以只会输出只在a.txt出现过⼀次的内容(b.txt的内容⾄少出现两次),即是差集;对于同理。
样例
# a.hosts
[root(0)@thatsit 11:40:46 ~/scripts]# cat a.hosts
10.10.1.101
10.10.1.102
10.10.1.103
10.10.1.104
[root(0)@thatsit 11:40:47 ~/scripts]#
# b.hosts
[root(0)@thatsit 11:40:48 ~/scripts]# cat b.hosts
10.10.1.101
10.10.1.103
sort命令排序10.10.1.105
[root(0)@thatsit 11:40:49 ~/scripts]#
# a.hosts ∩ b.hosts
[root(0)@thatsit 11:40:49 ~/scripts]# sort a.hosts b.hosts | uniq -d
10.10.1.101
10.10.1.103
[root(0)@thatsit 11:41:08 ~/scripts]# 
# a.hosts ∪ b.hosts
[root(0)@thatsit 11:41:10 ~/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(0)@thatsit 11:41:19 ~/scripts]#
# a.hosts - b.hosts
[root(0)@thatsit 11:41:25 ~/scripts]# sort a.hosts b.hosts b.hosts | uniq -u 10.10.1.102
10.10.1.104
[root(0)@thatsit 11:41:45 ~/scripts]#
# b.hosts - a.hosts
[root(0)@thatsit 11:41:47 ~/scripts]# sort a.hosts a.hosts b.hosts | uniq -u 10.10.1.105
[root(0)@thatsit 11:41:55 ~/scripts]#
参考链接:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。