如何区分2个文件,以便:
我的意思是上面的2是:带有on1的文件和第2行的b等于另一个文件,其中b在第1行和第2行。
如果问题仍然不明确,请告诉我。
感谢。
答案 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”。