2014-01-14 147 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 
相關問題