使用标准的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工具。
答案 0 :(得分:0)
我试图自己解决这个问题。我最接近的是:
diff -y -W 10000 file1 file2 | grep '|' | sed 's/\s*|\s*/\n/g'
一个问题是,这假设行首没有“空白”差异(或者您不在乎)。