我想知道diff
是如何决定差异是更改(即替换)还是添加和删除的组合?
我能从散装手册找到的最好的是
“‘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
输出则将它们视为删除和添加的组合。
发布于 2018-11-10 17:24:55
两个文件之间的LCS是1 3
,而不是3
。所以这里有三块,而不是两个文件之间的两块。
https://unix.stackexchange.com/questions/480848
复制相似问题