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

Copy only difference (kdiff, winmerge, any diff like tool)

是否可以只复制两个文件的不同之处?就像在 winmerge 中一样,但是,我找不到这个选项

就像在这个屏幕上一样 - 我只想复制 'yellow part'。当然,我可以手动执行此操作,但在大文件中它并不太好笑 :-)

大多数 diff 工具都具有补丁生成功能,可以用于剪贴板,这主要是您想要的,因为您只会在左侧和右侧获得更改的文本(如果删除上下文行)。如果您只想要一侧的那些,您可以轻松地根据第一个字符过滤补丁(删除所有行,使用编辑器,匹配 ^[+>].*$ 以保留删除的行或 ^[-<].*$ 以保留添加行)。

命令行中的 diff 工具将输出那个,用 grep 和上面的正则表达式之一你就完成了。

在 winmerge 中有一个非常好的功能 - 在工具中,您可以通过工具 -> Raport 在 html 中生成 raport。在该操作之后,您可以解析生成的 html- 并以这种方式获得唯一的差异(但也许这不是最简单的解决方案)

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

注意:选项“仅显示差异”将被禁用,直到您切换到标记为“引用视图”的底部选项卡(文件为加载)。之后您应该可以使用仅差异视图。

WinMerge 提供 "Copy Left to..." 或 "Copy right to..." 将仅将差异复制到所选文件夹。

WinMerge 有一个 built-in 和简单的方法来生成这样的 "diff only" 文件,他们称之为 "patches".

单击 "Tool",然后单击 "Generate Patch...",然后输入要存储结果的位置:

您将获得(例如)文件

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

使用 the standard, compact way of representing diff 并且易于操作。

以下是您在 WinMerge 中的操作方法:

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