代码之家  ›  专栏  ›  技术社区  ›  PanDe

了解unix diff命令

  •  1
  • PanDe  · 技术社区  · 6 年前

    我试图找出两个文件之间的区别,我想知道文件2中的新条目。对于EX:

    如果a.txt包含:

    a
    b
    c
    

    而b.txt包含:

    c
    d
    f
    

    我想得到 d and f

    我使用的命令是: diff --changed-group-format="%>" --unchanged-group-format=''

    mymach@dev-machine:~/test$ grep 'C:/Documents and Settings/pandep2/AppData/Local/Google/Chrome/User Data/CrashpadMetrics.pma~RF115cef5.TMP' file_1.log
    C:/Documents and Settings/pandep2/AppData/Local/Google/Chrome/User Data/CrashpadMetrics.pma~RF115cef5.TMP
    
    mymach@dev-machine:~/test$ grep 'C:/Documents and Settings/pandep2/AppData/Local/Google/Chrome/User Data/CrashpadMetrics.pma~RF115cef5.TMP' file_2.log
    C:/Documents and Settings/pandep2/AppData/Local/Google/Chrome/User Data/CrashpadMetrics.pma~RF115cef5.TMP
    
    mymach@dev-machine:~/test$ diff --changed-group-format="%>" --unchanged-group-format='' file_1.log file_2.log >diff_file.log
    
    mymach@dev-machine:~/test$ grep 'C:/Documents and Settings/pandep2/AppData/Local/Google/Chrome/User Data/CrashpadMetrics.pma~RF115cef5.TMP' diff_file.log
    C:/Documents and Settings/pandep2/AppData/Local/Google/Chrome/User Data/CrashpadMetrics.pma~RF115cef5.TMP
    

    既然两个文件中都存在同一个文件,为什么diff命令仍然会报告该文件?

    1 回复  |  直到 6 年前
        1
  •  1
  •   PanDe    6 年前

    在这种情况下,我们最好在unix中使用comm命令。

    对于上述场景,我使用了:

    comm -23 <(sort file_1.txt) <(sort file_2.txt)
    

    这将给出文件1.txt的唯一文件

    comm -13 <(sort a.txt) <(sort b.txt)
    

    这将给出文件2.txt的唯一文件

    comm -12 <(sort a.txt) <(sort b.txt)
    

    这将给出两个文件之间的公共文件