差异和“--GTYPE-group-format”

时间:2011-11-11 18:00:40

标签: unix command-line diff

我要将两个文件与diff进行比较。更改的行应该得到前缀“U”,新行“I”和删除的“D”:

文件1:

1
2
3
4
5

file2的:

1
2a
4
5
6

diff --old-group-format="D %<" \
--new-group-format="I %>" \
--changed-group-format="U %>" \
--unchanged-group-format="" file1 file2

输出结果为:

U 2a
I 6

但是在哪里

D 3

1 个答案:

答案 0 :(得分:7)

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

U 2
3

所以不同的分组是:

`1 -> 1` unchanged
`2,3 -> 2a` changed
`4,5 -> 4,5` unchanged
`  -> 6` new

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

1a
2
4
5
6

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

U 1a
D 3
I 6

因为2 -> 24 -> 4未更改,所以缺少的3会被归为“旧”。