linux比较文件输出不同的内容

06-03

  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欢迎你的加入