2014-01-14 144 views
0

我有几个软件包列表,有数百个条目,我想找出它们之间的差异。查找两个文件之间的差异

文件的内容看起来像

文件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给定上述两个文件。

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

回答

1

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

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

您的输入,它会产生:

somepackage4 
+0

是的!正是我想要的!我正在玩差异,但由于他们并不总是在相同的行号,这只是没有工作的工作。 –

0

可以使用grep
查找包中列出的文件2,但不是在文件1

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

使用awk

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