找到两个文件之间的差异

时间:2014-01-14 05:22:26

标签: bash file shell scripting

我有几个包列表,有数百个条目,我想找到它们之间的差异。

文件内容如

文件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

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

3 个答案:

答案 0 :(得分:1)

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

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

为了您的输入,它会产生:

somepackage4

答案 1 :(得分:0)

您可以使用grep
查找file2中列出但不在file1中的包

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

答案 2 :(得分:0)

使用awk

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