首页 文章

删除记事本中的重复行

提问于
浏览
526

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

10 回答

  • 26

    如果行紧接在一起,那么你可以使用正则表达式替换

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

    替换为: \1

  • 14

    Notepad++ can do this, provided you wanted to sort by line, and remove the duplicate lines at the same time.

    您将需要TextFX插件 . 这曾经包含在旧版本的记事本中,但是如果您有更新的版本,可以通过转到 Plugins -> Plugin Manager -> Show Plugin Manager -> Available tab -> TextFX -> Install 从菜单中添加它 . 在某些情况下,它也可能被称为 TextFX Characters ,但这是一回事

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

    确保选中"sort outputs only unique..." . 接下来,选择一个文本块(Ctrl A以选择整个文档) . 最后,单击"sort lines case sensitive"或"sort lines case insensitive"

    menu layout in n++

  • 722

    Since Notepad++ Version 6 您可以在搜索和替换对话框中使用此正则表达式:

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

    replace with nothing . 这将从文件中最后一次出现的所有重复行中留下 .

    No sorting is needed for that and the duplicate rows can be anywhere in the file!

    您需要选中“正则表达式”和“ . 匹配换行符”选项:

    Notepad++ Replace dialogue

    • ^ 匹配行的开头 .

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

    • $ 匹配该行的结尾 .

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

    • (?=.*^\1$) 这是一个积极的先行断言 . 这是此正则表达式中的重要部分,只有在文件中的其他位置之后存在完全相同的行时,才会匹配(并删除)行 .

  • 2

    Notepad++

    • 更换窗口

    确保在搜索模式下

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

    Find what:

    ^( . *)(\ r?\ n \ 1)$

    Replace with:

    1美元

    before:

    我们认为那里,我们认为有单行是否有可能

    after:

    我们认为有单行是否有可能

  • 23

    如果你不关心行顺序(我不认为你这样做),那么你可以使用Linux / FreeBSD / Mac OS X / Cygwin框并执行:

    $ cat yourfile | sort | uniq > yourfile_nodups
    

    然后在记事本中再次打开该文件 .

  • 515

    后一版本的Notepad根本不包含TextFX插件 . 为了使用插件来排序/消除重复项,必须下载并安装插件(更多涉及)或使用插件管理器添加插件 .

    A)简单方法(如here所述) .

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

    B)更多参与方式,如果需要另一个版本或简单方法不起作用 .

    • 从SourceForge下载插件:

    http://downloads.sourceforge.net/project/npp-plugins/TextFX/TextFX%20v0.26/TextFX.v0.26.unicode.bin.zip

    • 打开zip文件并解压缩 NppTextFX.dll

    • NppTextFX.dll 放在记事本插件目录中,例如:
      C:\ Program Files \ Notepad \ plugins

    • 启动记事本,TextFX将成为文件菜单项之一(如Colin Pickard上面的答案#1所示)

    安装TextFX插件后,请按照答案#1中的说明进行排序和删除重复项 .

    另外,如果经常使用此命令或想要复制键盘快捷键(例如TextPad中的F9)进行排序,请考虑使用 Settings > Shorcut mapper 设置键盘快捷键 .

  • 76

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

    With ConyEdit running in background, follow the steps below:

    • 在文本末尾输入命令行 cc.ddl .

    • 复制文本和命令行 .

    • 粘贴,然后你会看到你想要的 .

    Example

    enter image description here

  • 1

    没有人为我工作 .

    一个解决方案是:

    更换

    ^(.*)\s+(\r?\n\1\s+)+$
    

    \1
    
  • 3

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

    替换为: $1$2

    点击替换按钮直到文件中没有正则表达式的匹配项 .

  • 3

    插件管理器目前不可用(不随附发行版)用于记事本,您必须手动安装(https://github.com/bruderstein/nppPluginManager/releases),即使您这样做,很多插件也不再可用(没有TextFX)插件 .

    也许还有另一个包含所需功能的插件 . 除此之外,在NotePad中执行此操作的唯一方法是使用一些特殊的 regex 进行匹配,然后替换(CTRL F - > Replace选项卡) .

    虽然通过 Edit 菜单项(修剪,删除空行,排序,转换EOL)有许多功能可用,但没有"unique"操作可用 .

    我有Windows 10然后你可以 enable Bash (只需在Microsoft Store中键入Ubuntu并按照说明中的说明进行安装)并使用 cat your_file.txt | sort | uniq > your_file_edited.txt . 当然,您必须与"your_file.txt"在同一工作目录中,或通过它来引用它路径 .

相关问题