unix diff特殊选项

时间:2011-01-03 23:07:16

标签: unix diff

如何区分2个文件,以便:

  1. 我不关心任何类型的空格(-b选项)
  2. 我不关心内容的位置。 (??)
  3. 我的意思是上面的2是:带有on1的文件和第2行的b等于另一个文件,其中b在第1行和第2行。

    如果问题仍然不明确,请告诉我。

    感谢。

1 个答案:

答案 0 :(得分:1)

首先对两个文件进行排序,然后对它们进行区分。没有办法说服差异,a和b线在任何方面都是可以互换的。顺序对于差异非常重要。

编辑评论 -

像diff这样的工具除了简单的有序行之外,不理解任何更高级别的语义。你可能会尝试编写一个工具,将你的文件转换为更高级别的概念,每行一个,然后diff可以处理(与编写自定义差异,这是一种痛苦)。既然你不能对整个文件进行排序,也许你可以对那些“顺序无关紧要”的小部分进行排序,这样他们也无关紧要。

最终文件不一定是正确的文件格式(即与原始语法兼容),而是足够简单地传达使用您正在寻找的差异,同时仍然捕获您的语义,同时也利用像diff这样的现成工具。

示例:

文件1:

block thing {
    a
    b
}

block thing 2 {
    c
    d
}

文件2:

block thing {
    b
    c
    a
}

block thing 3 {
    f
    e
}

“已排序”文件1:

block thing {
    a
    b
}

block thing 2 {
    c
    d
}

“已排序”文件2:

block thing {
    a
    b
    c
}

block thing 3 {
    e
    f
}

最后,理想情况下,你会发现Block 3是“new”以及Block 1中的“c”。