【发布时间】:2014-08-05 20:02:26
【问题描述】:
在使用标准的 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 引入了其他方面对我的情况不是最佳的。
我正在寻找一种命令行方式,或者可以在代码中使用的库,而不是 UI 工具。
【问题讨论】:
-
如果你做了一些简单的事情,比如在每条真实的行之间放一个空行(只是为了区分),它会给你你想要的输出。这可以在许多工具中完成,包括 sed。不幸的是,我不知道如何从文件以外的任何内容中读取差异......然后你可以再次将它们放入 /var/tmp 然后运行 diff
-
我想我可以把它放在一起。如果文件非常不同,也许它会弄乱差异。让我们看看还会出现什么。谢谢。