在Notepad ++中删除重复的行

Removing duplicate rows in Notepad++

是否可以删除记事本+中的重复行,只留下一行?


记事本++可以做到这一点,只要您想按行排序,并同时删除重复的行。

您将需要textfx插件。这以前包含在旧版本的记事本+中,但是如果您有更新的版本,您可以从菜单中添加它,方法是转到Plugins -> Plugin Manager -> Show Plugin Manager -> Available tab -> TextFX -> Install。在某些情况下,它也可以称为TextFX Characters,但这是相同的。

所需的复选框和按钮现在将显示在:TextFX -> TextFX Tools下的菜单中。

确保选中"Sort outputs only unique…"。接下来,选择一个文本块(ctrl+a选择整个文档)。最后,单击"排序行区分大小写"或"排序行不区分大小写"

menu layout in n++


由于记事本++版本6,您可以在"搜索和替换"对话框中使用此regex:

1
^(.*?)$\s+?^(?=.*^\1$)

换成什么都没有。这将使所有重复行中的最后一个出现在文件中。

不需要排序,重复的行可以在文件中的任何位置!

您需要检查选项"正则表达式"和。匹配换行符":

Notepad++ Replace dialogue

  • ^与行首匹配。

  • (.*?)匹配任何字符0次或更多次,但尽可能少(它与第行完全匹配,因为需要这样做)。匹配newline"选项)。由于使用\1可以访问周围的括号,因此存储匹配的行。

  • $与行尾匹配。

  • \s+?^此部分匹配所有空白字符(换行!)直到下一行的开始=>这将删除匹配行后的新行,以便替换后没有空行。

  • 这是一个积极的前瞻性断言。这是这个regex中的重要部分,只有当文件中其他地方的行完全相同时,才会匹配(并删除)一行。


如果行紧跟在另一行之后,则可以使用regex replace

搜索模式:^(.*
?
)(\1)+

替换为:\1


记事本+

->替换窗口

确保在搜索模式下

您已选择"正则表达式"单选按钮

找到什么:

^(.*)(
?
\1)+$

替换为:

$1

之前:

and we think there

and we think there

single line

Is it possible to

Is it possible to

后:

and we think there

single line

Is it possible to


如果您不关心行顺序(我认为您不关心),那么您可以使用Linux/FreeBSD/Mac OS X/Cygwin框并执行以下操作:

1
$ cat yourfile | sort | uniq > yourfile_nodups

然后在记事本+中再次打开文件。


后一个版本的记事本++显然根本没有包含textfx插件。为了使用插件来排序/消除重复项,必须下载并安装插件(更多涉及),或者使用插件管理器添加插件。

a)简单方法(如本文所述)。

插件->插件管理器->显示插件管理器->可用选项卡->textfx字符->安装

b)更复杂的方式,如果需要另一个版本或简单的方式不起作用。

  • 从sourceforge下载插件:

    http://downloads.sourceforge.net/project/npp插件/textfx/textfx%20v0.26/textfx.v0.26.unicode.bin.zip

  • 打开zip文件并提取nptextfx.dll

  • 将nptextfx.dll放在notepad++插件目录中,例如:C:Program Filesotepad++插件

  • 启动记事本++,textfx将是文件菜单项之一(如上面Colin Pickard的回答1所示)。

  • 安装textfx插件后,按照答案1中的说明对重复项进行排序和删除。

    此外,如果经常使用此命令或希望复制键盘快捷方式(如文本板中的F9)进行排序,请考虑使用"设置>快捷方式映射器"设置键盘快捷方式。


    您可能需要一个插件来完成此操作。您可以尝试conyedit的命令行cc.ddl(删除重复行)。它是文本编辑器的交叉编辑器插件,包括记事本++。

    当conyedit在后台运行时,请执行以下步骤:

  • 在文本末尾输入命令行cc.ddl
  • 复制文本和命令行。
  • 粘贴,你就会看到你想要的。
  • 例子enter image description here


    没有人为我工作。

    解决方案是:

    替换

    1
    2
    3
    ^(.*)\s+(
    ?
    \1\s+)+$

    具有

    1
    \1


    搜索正则表达式:\b(\w+)\b([\w\W]*)\b\1\b

    换成:$1$2

    单击"替换"按钮,直到文件中的正则表达式不再匹配为止。


    插件管理器当前不可用(不随发行版提供),您必须手动安装(https://github.com/bruderstein/nppluginmanager/releases),即使这样,许多插件也不再可用(没有textfx)插件。

    可能还有另一个插件包含所需的功能。除此之外,在记事本++中唯一的方法是使用一些特殊的regex进行匹配,然后进行替换(ctrl+f->replace tab)。

    虽然通过编辑菜单项(剪裁、删除空行、排序、转换EOL)可以使用许多功能,但没有"唯一"操作可用。

    如果您有Windows10,那么您可以启用bash(只需在Microsoft Store中键入ubuntu并按照说明中的说明进行安装)并使用cat your_file.txt | sort | uniq > your_file_edited.txt。当然,您必须和"your_file.txt"在同一个工作目录中,或者通过路径引用它。