linux比较文件输出不同的内容
linux比较文件输出不同的内容
目前据我所了解的有如下几种方法,来比较两个文件的行,以输出他们的不同之处:
1) comm mission:
comm [-123] file1 file2 [> sfile]
NOTE: file1,file2 must be firstly sorted !
-1/2/3 means: -1 ----- rid the only retained contents in file1
-2 ----- rid the only retained contents in file2
-3 ----- rid the communal lines in both two files
正如,上面说的那样,comm命令运用的前提是针对两个sorted文件!
该命令是对两个已经排好序的文件进行比较。其中file1和file2是已排序的文件。comm读取这两个文件,然后生成三列输出:仅在file1中出现的行;仅在file2中出现的行;在两个文件中都存在的行。如果文件名用“- ”,则表示从标准输入读取。
选项1、2或3抑制相应的列显示。例如comm - 12就只显示在两个文件中都存在的行;comm - 23只显示在第一个文件中出现而未在第二个文件中出现的行;comm - 123则什么也不显示。
2) grep mission:
grep -v -f file1 file2
/*注::此法在对比数字时候比较凑效果,文本对比不建议使用*/
3) awk mission:
awk '{print NR,$0}' file1 file2 |sort -k2|uniq -u -f 1|sort -k1|awk '{print $2}'
或者:
awk '{print $0}' file1 file2 |sort|uniq -u
4) diff mission:
diff [-opt] file1 file2
注:更多精彩教程请关注电 脑教程栏目,电脑办公群:189034526欢迎你的加入