在工作中,有时候需要对比两个文件的内容区别,但是有不知道如何进行比较。如果使用for循环一行一行的进行对比有点low了,下面看看不low的用法。
环境配置
我这里先创建了两个文件,然后在文件中创建了一些字符串,也可以使用数字代理。内容随便,做测试只要实现这个功能,所以内容不易过多。
[root@www.wulaoer.org wulaoer]# cat wulaoer.json golong python3 python devops 运维开发 [root@www.wulaoer.org wulaoer]# cat wolf.json python python3 mysql etcd kubernetes
这个是我的两个文件内容,相同的也就是python,python3两个字符,下面我尝试使用四种方式进行比较。
使用grep对比
[root@www.wulaoer.org wulaoer]# cat wulaoer.json golong python3 python devops 运维开发 [root@www.wulaoer.org wulaoer]# cat wolf.json python python3 mysql etcd kubernetes [root@www.wulaoer.org wulaoer]# grep -vwf wulaoer.json wolf.json mysql etcd kubernetes
这里使用了反向匹配,前面是wulaoer.json文件匹配wolf.json,后面接着wolf.json匹配wulaoer.json,是针对整个文件内容做对比,不是文件行做对比
使用comm对比
[root@www.wulaoer.org wulaoer]# cat wulaoer.json golong python3 python devops 运维开发 [root@www.wulaoer.org wulaoer]# cat wolf.json python python3 mysql etcd kubernetes [root@www.wulaoer.org wulaoer]# comm -23 --nocheck-order wolf.json wulaoer.json python mysql etcd kubernetes
comm是根据行做对比,不同行重复的内容不会去掉,这样对比的两个文件中会有重复的内容。
使用awk对比
[root@www.wulaoer.org wulaoer]# cat wulaoer.json golong python3 python devops 运维开发 [root@www.wulaoer.org wulaoer]# cat wolf.json python python3 mysql etcd kubernetes [root@www.wulaoer.org wulaoer]# cat wulaoer.json wolf.json | awk '!a[$1]++' golong python3 python devops 运维开发 mysql etcd kubernetes
使用wak得到合并后去重的结果,这样的对比会把两个文件都打开后然后进行去重。
使用diff对比
[root@www.wulaoer.org wulaoer]# cat wulaoer.json golong python3 python devops 运维开发 [root@www.wulaoer.org wulaoer]# cat wolf.json python python3 mysql etcd kubernetes [root@www.wulaoer.org wulaoer]# diff -w wulaoer.json wolf.json | grep \^\> | awk '{print$2}' python3 mysql etcd kubernetes
这里使用的diff对比的两个文件也是根据行进行对比,不同行的重复内容对比不出来。更多diff命令详解请参考:https://www.wulaoer.org/?p=1058
以上就是两个文件内容和行的对比,可以根据自己的不同需求,选择不同的对比方式,主要是了解每个对比方式选择的是行还是内容,要不达不到自己想要的结果。
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏