实时警报通知:微信告警通知的重要性解析
1018
2023-02-14
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的结果相同。
发表评论
暂时没有评论,来抢沙发吧~