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

相关内容

    暂无相关文章