想象一下,您有一个源文件,其中有人使用简单的文本替换将一个符号重命名为另一个符号。该文件的diff输出通常很长,并不是发生了什么的非常有用的标识符。你想知道的是,改变只是s/a/b/g
,如果是a
和b
是什么 - 你不会事先告诉这个工具,它会必须自己解决。 (为了论证,你可以假设'a'和'b'不包含换行符。)
这对于那些喜欢设计算法的人来说是一个问题,但它基于我想要使用的实际工具,所以如果您碰巧知道一个很好的命令行工具,可以执行上述任何工作,奖励积分。 ;)
答案 0 :(得分:1)
我现在想到的两个选项:
/s/b/a/g
并对文件进行区分(虽然这显然不会在正则表达式中发现错误)a
不同而且b
另一方面,不标记该行)答案 1 :(得分:1)
Darcs (distributed version control system)对此类更改有特殊处理,因此它确实有一个算法。因此,请尝试查看他们的文档/询问他们。重用该算法可能有点困难,因为它是用Haskell编写的。