比较文件并使用Notepad ++仅返回差异

Ife*_*kwo 17 diff compare notepad++

Notepad ++有一个比较插件工具,用于比较文本文件,其操作方式如下:

启动Notepad ++并打开要运行比较检查的两个文件.

单击"插件"菜单,

选择"比较",然后单击"比较".

该插件将运行比较检查并并排显示两个文件,并突出显示文本中的任何差异.

这是一个很好的功能,我已经愉快地使用了一段时间.现在,我一直在寻找一个选项,以进一步选择突出显示的不同行(例如删除未突出显示的行),反之亦然:即清除突出显示的行.

有没有直接的方法来实现这一目标?

Jul*_*lio 11

要在 notepad++ 中减去两个文件(文件 1 - 文件 2),您可以按照以下步骤操作:

  1. 建议:如果可能,请删除两个文件上的重复项,特别是当文件很大时。为此:编辑 => 行操作 => 按字典顺序升序对行进行排序(在两个文件上执行此操作)
  2. 添加----------------------------为 file1 上的页脚(至少添加 10 个破折号)。这是分隔 file1 内容和 file2 内容的标记线。
  3. 然后将file2的内容复制到file1的末尾(标记后面)
  4. Control+H
  5. 搜索:(?m-s)^(?:-{10,}+\R[\s\S]*+|(.*+)\R(?=(?:(?!^-{10,}$)-++|[^-]*+)*+^-{10,}+\R(?:^.*+\R)*?\1(?:\R|\z))) 注意:根据您的需求使用案例敏感性
  6. 替换为:(leave empty)
  7. 选择Regular expression单选按钮
  8. Replace All

如果 file1/file2 可能有与标记相同的行,则可以修改标记。在这种情况下,您将必须调整正则表达式。

顺便说一句,您甚至可以录制一个宏来执行所有步骤(添加标记、切换到 file2、将内容复制到 file1、按一下按钮应用正则表达式。

编辑:

更改了正则表达式以添加一些改进:

  • 速度相关:
    • 尽可能避免回溯
    • 避免在标记后搜索
  • 可用性:
    • 线条允许使用破折号。但分隔符仍然是^-{10,}$
    • 除了文字之外还可以与其他角色一起使用

速度对比:

新方法旧方法

所以基本上是 78 毫秒 vs 1.6 秒。这是一个很好的改进!这使得比较千字节大小的文件成为可能。

您仍然可能想使用一些专用程序来比较或减去更大的文件。


Jul*_*lio 2

我对此有一个肮脏的解决方法。与此相比,它可以节省一些时间Control+C, Alt+Tab, Control+V; Control+C, Alt+Tab, Control+V; ...,但对于大文件或者如果两个文件的差异很大,则可能不值得。对于较大的文件,您可能更喜欢使用其他工具。

通常,这在比较“单词”组时效果最好,并且不适用于列表内容(例如源代码)

所以解决方法是:

  1. 可选:(取决于要比较的内容)对两个文件进行排序(这将使将来的比较更容易)要执行此操作:编辑=>行操作=>按字典顺序升序对行进行排序(对两个文件都执行此操作)
  2. 与插件比较文件
  3. 选择一个文件并检查要保留的行。在每一行之前添加一个制表符。请记住,您可以选择多行并按 Tab 键将它们制成表格。或者,您可以将制表符添加到要删除的行中
  4. 对文件进行排序。表格行将首先出现。所以现在您可以复制粘贴它们(或复制粘贴未制表的)