开发中偶尔会遇到,线下测试好好的项目,放到线上死活就是和测试不一致,这时候排除过程中,有一种情况常会考虑到:比较线上和线下配置文件是否一致,搞不好线上真被人动过或者上线部署脚本有问题。
那Linux下如何比较两个文件的异同?
使用命令diff -y -W100 file1 file2
其中-y
参数表示比较时两个文件并排对比展示,这样直观一些。而-W100
则表示列的宽度为100,数字可以变。
下面:查看两个要比较文件内容
[root@dev test]# cat ./test1.txt
111
222
331
444
[root@dev test]# cat ./test2.txt
111
333
444
555
下面:比较两个文件异同,不指定列宽度(默认130)
[root@dev test]# diff -y ./test1.txt ./test2.txt
111 111
222 | 333
331 <
444 444
> 555
下面:比较两个文件异同,指定列宽度20
[root@dev test]# diff -y -W20 ./test1.txt ./test2.txt
111 111
222 | 333
331 <
444 444
> 555
注意比较结果中|
表示这一行内容有差异。
<
表示后面文件少一行
>
表示后面文件多一行
关于文件比较只记住上面这个
diff -y file1 file2
就完全足够了,有用到时候能立即反映上来就行。
还有一些可选参数,感觉没什么必要记,像-i
这种比较时候用来忽略大小写,使用场景太小了,我比较文件肯定是两个本来应该完全相同的文件,意外某个地方被动过了,肉眼不好找才用diff的,如果还忽略大小写,有可能找不出来。
另外关于上文中参数-W20
数字 20具体指的是每列的宽度还是两列总共的宽度,以及 20的长度单位是字符还是字节 我也都没考究出来。不过我们知道它可以调节屏幕显示的效果就行。