2011-12-22 37 views
9

我想使用通信來計算兩個排序文件之間的差異,但結果沒有意義,有什麼不對?我想表明,存在於test2的,但不是test1的字符串,然後表明存在test1的字符串而不是test2的使用通信來比較兩個文件

 
>test1 
a 
b 
d 
g 

>test2 
e 
g 
k 
p 

>comm test1 test2 
a 
b 
d 
    e 
g 
    g 
    k 
    p 

回答

13

爲了表明存在於test2但不是在test1線,寫任一這些:

comm -13 test1 test2 
comm -23 test2 test1 

-1與存在僅在第一文件中的行隱藏柱; -2隱藏用線列存在僅在第二文件中;隱藏-3與存在於兩個文件系列)

並且,反之亦然,以顯示存在於test1線而不是在test2

注意對自身一行g被認爲是區別於g與後一個空間,這就是爲什麼你會得到

g 
    g 

,而不是

 g 
+2

很好的發現,追蹤空間。 – sarnold 2011-12-22 01:12:15

2

共同的末尾添加字符2檔之間,說「Z」 。你會看到第三列出現,表明這個值對兩者都是通用的。

輸出用於顯示'col1中的數據是uniq到file1',而'col2中的數據對file2是唯一的'。

最後,comm'-1,-2,-3'的參數表示抑制來自所提供的列編號的輸出,例如-1。

我希望這會有所幫助。

+0

@shelter:g是常見字符,無論如何,必須有一些隱藏字符在文件中搞砸了comm,我用相同的字母重寫了文件,現在結果是正確的。 – user121196 2011-12-22 01:06:47

+0

@ user121196:是的,對不起,我錯過了那個細節,在閱讀你的文章時我沒有戴上眼鏡。很高興你有一個解決方案。祝你好運。 – shellter 2011-12-22 01:21:31