使用comm来区分两个文件

时间:2011-12-22 00:54:12

标签: bash shell

我正在尝试使用comm来计算两个已排序文件之间的差异,但结果没有意义,出了什么问题?我想显示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

2 个答案:

答案 0 :(得分:16)

要显示test2但不在test1中的行,请写下以下任意一行:

comm -13 test1 test2
comm -23 test2 test1

-1用仅存在于第一个文件中的行隐藏列; -2用仅存在于第二个文件中的行隐藏列; -3用行隐藏列存在于两个文件中。)

反之亦然,以显示test1但不在test2中的行。

请注意,某一行上的g被认为与g不同,后面有一个空格,这就是

的原因
g
    g 

而不是

        g

答案 1 :(得分:2)

在两个文件之间添加一个共同的字符,最后说'z'。您将看到第3列出现,表示该值对两者都是通用的。

输出用于显示'col1中的数据是uniq到file1',而'col2中的数据对于file2是唯一的'。

最后,comm'-1,-2,-3'的参数意味着抑制所提供的列编号的输出,例如-1。

我希望这会有所帮助。