比较结果不一致导致差异结果不一致

Ian2thedv

考虑以下文件和差异结果:

a1.txt

a
b
My name is Ian

a2.txt

a
a
b
My name is John

运行diff --side-by-side --suppress-common-lines a1.txt a2.txt产生:

                             >  a
My name is Ian               |  My name is John

正确说明a已添加a2.txtMy name is Ian更改为的状态My name is John

但是,如果我b从两个文件中删除,则产生的结果将有所不同:

b1.txt

a
My name is Ian

b2.txt

a
a
My name is John

运行diff --side-by-side --suppress-common-lines b1.txt b2.txt产生:

My name is Ian                |  a
                              >  My name is John

这说明该行已My name is Ian更改为,aMy name is John已添加到中b2.txt

即使第二次比较的结果在技术上有效,但a1.txt之间的差a2.txt也等于b1.txt和的差b2.txt,所以为什么结果不相等?

我能做些什么,使第二个比较产生与第一个比较相同的输出?

jub0bs

您在两个示例之间观察到的差异是正常的;它只是与您的期望冲突diffdiff实用程序使用线作为单位/原子来解决最长的公共子序列问题

[...]之间的差别a1.txta2.txt等同于中b1.txtb2.txt,那么,为什么结果不相等?

在这里,两个示例中最长的公共子序列是不同的,并且粗略地说,不要以相同的方式“排列”。在第一个示例中,您有

# a1.txt              # a2.txt                   # line in common?
                      a                          n
a                     a                          y 
b                     b                          y
My name is Ian        My name is John            n

而在第二个示例中,

# b1.txt              # b2.txt                   # line in common?
a                     a                          y
My name is Ian        a                          n
                      My name is John            n

因此,就diff文件而言,两对文件之间的差异并不相等。diff没有内存,您获取b[12].txt文件所要做的就是b从每个文件中删除该a[12].txt它所看到的是,现在最长的公共子序列仅包含在包含的一行中a,并由此推断出两个b[12].txt文件之间的差异

我能做些什么,使第二个比较产生与第一个比较相同的输出?

缺少使用其他差异算法(或实现自己的差异算法)的想法,我不这么认为。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章