我想知道如何diff
判断差异是改变(即替换)还是增删组合?
我能找到的最好的diffutils 手册是
'fct'
将第一个文件的范围 f 中的行替换为第二个文件的范围 t 中的行。这就像组合的添加和删除,但更紧凑。例如,“5,7c8,10”表示将文件 1 的第 5-7 行更改为文件 2 的第 8-10 行;或者,如果将文件 2 更改为文件 1,请将文件 2 的第 8–10 行更改为文件 1 的第 5–7 行。
例如,我有两个文件,每个文件有四行
$ paste f2 f3
0 1
1 2
3 3
5 6
我区分它们
$ diff f2 f3
1d0
< 0
2a2
> 2
4c4
< 5
---
> 6
为什么是
1d0
< 0
2a2
> 2
不是
1,2c1,2
< 0
< 1
---
> 1
> 2
反而?
我给出的替代方案和diff
输出都具有3
公共行,但我的替代方案将公共行之前的不同行视为c
即替换,而diff
输出将它们视为删除和添加的组合。
答案1
两个文件之间的 LCS 是1 3
, 而不是3
.因此,两个文件之间存在三个块,而不是两个块。