差异和"--GTYPE-group-format"

Tor*_*oru 3 unix diff command-line

我有两个我想要比较的文件diff.更改的行应该得到前缀"U",新行"I"和删除的"D":

文件1:

1
2
3
4
5
Run Code Online (Sandbox Code Playgroud)

文件2:

1
2a
4
5
6

diff --old-group-format="D %<" \
--new-group-format="I %>" \
--changed-group-format="U %>" \
--unchanged-group-format="" file1 file2
Run Code Online (Sandbox Code Playgroud)

输出是:

U 2a
I 6
Run Code Online (Sandbox Code Playgroud)

但是在哪里

D 3
Run Code Online (Sandbox Code Playgroud)

Jon*_*Lin 7

这是差异分组的方式.在您的changed小组中,您正在打印新的更改而不是旧的更改

U 2
3
Run Code Online (Sandbox Code Playgroud)

所以不同的分组是:

`1 -> 1` unchanged
`2,3 -> 2a` changed
`4,5 -> 4,5` unchanged
`  -> 6` new
Run Code Online (Sandbox Code Playgroud)

为了让diff将匹配组合为"old",必须在之前和之后保持不变.所以如果file2是这样的:

1a
2
4
5
6
Run Code Online (Sandbox Code Playgroud)

你运行相同的diff命令,你会得到这个:

U 1a
D 3
I 6
Run Code Online (Sandbox Code Playgroud)

因为有一个2 -> 2并且4 -> 4没有变化,所以缺少的3被分组为"旧".