gpt4 book ai didi

shell - 等效更改的差异结果不一致

转载 作者:行者123 更新时间:2023-12-01 13:50:12 25 4
gpt4 key购买 nike

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

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.txt 并且 My 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 行更改为 a 并且 My name is John 被添加到 b2.txt.

即使第二次比较的结果在技术上是有效的,a1.txta2.txt 之间的差异等同于 b1.txt b2.txt,那么为什么结果不相等呢?

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

最佳答案

您在两个示例之间观察到的差异是正常的;它只是与您对 diff 所做的期望相冲突。 diff utility解决了 longest-common-subsequence problem ,使用线作为单位/原子。

[...] the difference between a1.txt and a2.txt is equivalent to that of b1.txt and b2.txt, so why would the result not be equal?

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

# 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 文件所做的一切就是从每个 a[12].txt 文件。它所看到的是,最长的公共(public)子序列现在只包含包含 a 的一行,并且它从中推断出两个 b[12].txt 文件之间的差异那个。

Is there anything I can do such that the second comparison produces the same output as the first?

除非使用不同的 diff 算法(或实现您自己的算法),否则我不这么认为。

关于shell - 等效更改的差异结果不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32434272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com