Linux文件比较操作—文本文件的交集、差集与求差

网友投稿 1018 2023-02-14

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

Linux文件比较操作—文本文件的交集、差集与求差

最近公司业务调整,需要对属于百度某公司的域名进行剥离分开,属于本公司的域名更改掉。 域名非常之多之杂乱。各自分别整理手上的域名, 后面再整理无家可归的域名。

这就需要对文件进行操作,也就是把文件当作集合,求集合的交集差集等等集合论相关的数学理论。

下面介绍两个命令:

相关集合论解释:交集:打印出两个文件所共有的行。求差:打印出指定文件所包含的且不相同的行。差集:打印出包含在一个文件中,但不包含在其他指定文件中的行。

实例:

输出的第一列只包含在aaa.txt中出现的行,第二列包含在bbb.txt中出现的行,第三列包含在aaa.txt和bbb.txt中相同的行。各列是以制表符(\t)作为定界符。

格式化输出选项:-1:从输出中删除第一列-2:从输出中删除第二列-3:从输出中删除第三列

1.1 交集

打印两个文件的交集,需要删除第一列和第二列:

1.2 求差

打印出两个文件中不相同的行,需要删除第三列:

sed 's/^\t//' 是将制表符(\t)删除,以便把两列合并成一列。

1.3 差集

通过删除不需要的列,可以得到aaa.txt和bbb.txt的差集:

1.3.1 aaa.txt的差集

1.3.2 bbb.txt的差集

[warning]

2. grep命令

grep命令是常用来搜索文本内容的,根据输入的pattern,输出命中的内容。可以利用它的文件输入pattern特性,来求两个文件的交集。

2.1 交集

1
2
3
4
# grep -F -f aaa.txt  bbb.txt
bbb
ccc
aaa

2.2 差集

2.2.1 aaa.txt - bbb.txt的差集

1
2
3
4
5
# grep -F -v  -f   bbb.txt aaa.txt  
ddd
eee
111
222

2.2.2 bbb.txt  - aaa.txt的差集

1
2
3
4
# grep -F -v  -f   aaa.txt bbb.txt
hhh
ttt
jjj

[warning]

注意2:1. grep求交集不要求输入文件是排序的,但最好是唯一的2. 差集时注意输入文件的顺序[/warning]

这结果才与grep的结果相同。

上一篇:运维故障事件处置流程图(运维故障处理流程)
下一篇:包含it运维师前景的词条
相关文章

 发表评论

暂时没有评论,来抢沙发吧~