我有几个包列表,有数百个条目,我想找到它们之间的差异。
文件内容如
文件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
。
我一直在玩一些命令,但无法让它们正常工作。有没有人有这样做的好方法?
答案 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