【问题标题】:Finding the differences between two files查找两个文件之间的差异
【发布时间】:2014-02-02 02:26:21
【问题描述】:

我有几个包列表,有数百个条目,我想找出它们的区别。

文件的内容看起来像

文件 1:

somepackage1 0.1
somepackage2 5.6
somepackage3 1.3-1
etc...

文件 2:

somepackage1 0.1
somepackage2 5.7
somepackage3 1.3-1
somepackage4 0.1
etc...

我正在寻找可以生成所有添加的新包的几个命令或脚本。不仅是版本号,还有是否添加了新包。

因此,例如,在给定上述两个文件的情况下,命令或脚本将输出somepackage4

我一直在玩一些命令,但无法让它们中的任何一个正常工作。有没有人有这样做的好方法?

【问题讨论】:

    标签: bash file shell scripting


    【解决方案1】:

    您似乎想比较文件中的第一列并打印第二列中唯一的行。使用comm:

    comm -13 <(awk '{print $1}' file1 | sort) <(awk '{print $1}' file2 | sort)
    

    对于您的输入,它会产生:

    somepackage4
    

    【讨论】:

    • 是的!正是我想要的!我在玩 diff,但由于它们并不总是在相同的行号上,所以这行不通。
    【解决方案2】:

    你可以使用grep
    在 file2 中但不在 file1 中查找包

    grep -vf <(cut -d' ' -f1 file1)  <(cut -d' ' -f1 file2)
    

    【讨论】:

      【解决方案3】:

      使用 awk

      awk 'NR==FNR{a[$1];next}!($1 in a){print $1}' file1 file2
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-19
        • 1970-01-01
        • 2011-04-02
        • 2012-02-09
        • 1970-01-01
        相关资源
        最近更新 更多