Diff命令 - 避免连续不同行的单片分组

时间:2014-08-05 20:02:26

标签: diff lcs

使用标准的linux diff命令,我找不到一种方法来避免输出中出现以下类型的分组(这里的输出列表假定为unified format

这个问题针对的情况是,每一行与其他文件中的对应物的区别很小,而且查看对应文件旁边的每一行更有用。

我希望在比较输出中不显示这样的组:

- line 1 - line 2 - line 3 + line 1 modified + line 2 modified + line 3 modified

要得到这个:

- line 1 + line 1 modified - line 2 + line 2 modified - line 3 + line 3 modified

当然,这是一个方便的问题,因为这可以通过编写自己的代码来对diff输出进行后处理,或者使用自己的算法与lcs算法分开来实现。我不认为像wdiff等变体会有很大帮助,因为plain diff -U0输出格式非常符合我的需求,除了这个分组属性,而wdiff引入了对我的情况不是最佳的其他方面。 / p>

我正在寻找命令行方式,或者可以在代码中使用的库,而不是UI工具。

1 个答案:

答案 0 :(得分:0)

我试图自己解决这个问题。我最接近的是:

diff -y -W 10000 file1 file2 | grep '|' | sed 's/\s*|\s*/\n/g'

一个问题是,这假设行首没有“空白”差异(或者您不在乎)。