仅复制差异部分(kdiff、winmerge 或任何类似的工具)

18

有没有可能仅复制两个文件之间的差异?就像在winmerge中一样,但我找不到这个选项enter image description here

就像这个屏幕上的一样-我只想复制'黄色部分'。当然,我可以手动完成,但在大文件中这并不好玩:-)

6个回答

26

WinMerge 内置了一种简单的方法来生成所谓的“仅差异”文件,称为“补丁”。

点击“工具”,然后点击“生成补丁...”,并输入要存储结果的位置:

enter image description here

您将得到(对于您的示例)文件

4,8c4,8
< HELLO WORLD
< HELLO WORLD
< HELLO WORLD
< HELLO WORLD
< HELLO WORLD
---
> 
> 
> 
> 
> 

它使用标准的、紧凑的差异表示方式,并且易于操作。


很棒的答案,它帮助了我。 - Smile4ever

12

以下是您在WinMerge中的操作步骤:

  1. 禁用任何上下文行: [查看] > [上下文] > [0行]。
  2. 选择感兴趣的窗格:单击窗格。
  3. 选择所有文本:[编辑] > [全选] 或 [Ctrl]+[a]。
  4. 复制所选内容:[编辑] > [复制] 或 [Ctrl]+[c]。

11

有一个名为DiffMerge的免费应用程序。

注意:选项“仅显示差异”在您切换到下面标记为参考视图(文件已加载)的底部选项卡后将被禁用。之后,您就可以使用仅差异视图。

带内容的差异

仅差异


3
在WinMerge中,有一个非常不错的功能-在工具菜单下你可以通过Tools->报表生成HTML报告。在这个操作之后,你可以解析生成的HTML-从而只获取差异(但这可能不是最简单的解决方案)。

1
大多数差异工具都具有补丁生成功能,可以与剪贴板一起使用,这通常是您想要的,因为您将仅在左侧和右侧获得更改的文本(如果删除上下文行)。 如果您只想要其中一侧的文本,可以轻松地根据第一个字符过滤补丁(使用编辑器删除所有行,匹配类似于^[+>].*$以保留删除的行或^[-<].*$以保留添加的行)。
命令行中的差异工具将仅输出此内容,使用grep和上述正则表达式之一即可完成。

-1
WinMerge 提供了“复制左侧到…”或“复制右侧到…”的功能,可以仅将差异部分复制到指定文件夹中。

那应该在哪里? - Clément
比较两个相似的目录....然后右键单击文件列表,您将看到“复制左侧到...”的内容。 - Dss
好的,那这怎么解决楼主的问题呢?你只是在文件夹之间复制文件,而不是比较它们的文本内容,我认为。 - Clément
1
抱歉..我只看了帖子标题..没有阅读实际内容。 - Dss

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接