【问题标题】:using comm to diff two files使用 comm 来区分两个文件
【发布时间】:2011-12-22 00:54:12
【问题描述】:

我正在尝试使用 comm 来计算两个排序文件之间的差异,但是结果没有意义,有什么问题吗?我想显示test2中存在但test1中没有的字符串,然后显示test1中存在但test2中没有的字符串

>测试1 一种 b d G >测试2 e G ķ p > 通讯测试1 测试2 一种 b d e G G ķ p

【问题讨论】:

    标签: bash shell


    【解决方案1】:

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

    comm -13 test1 test2
    comm -23 test2 test1
    

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

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

    请注意,单独一行中的g 被认为与g 不同,后面有一个空格,这就是你得到的原因

    g
        g 
    

    而不是

            g
    

    【讨论】:

    • 很好的发现尾随空格。
    【解决方案2】:

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

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

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

    我希望这会有所帮助。

    【讨论】:

    • @shelter: g 是常用字符,反正文件里肯定有隐藏字符弄乱了 comm,我用相同的字母重写文件,现在结果是正确的。跨度>
    • @user121196 :是的,很抱歉我错过了这个细节,我在阅读您的帖子时没有戴上眼镜。很高兴你有一个解决方案。祝你好运。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多