是否可以删除记事本中的重复行,只留下一行?
如果行紧接在一起,那么你可以使用正则表达式替换
搜索模式: ^(.*\r?\n)(\1)+
^(.*\r?\n)(\1)+
替换为: \1
\1
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 ,但这是一回事
Plugins -> Plugin Manager -> Show Plugin Manager -> Available tab -> TextFX -> Install
TextFX Characters
所需的复选框和按钮现在将显示在以下菜单中: TextFX -> TextFX Tools .
TextFX -> TextFX Tools
确保选中"sort outputs only unique..." . 接下来,选择一个文本块(Ctrl A以选择整个文档) . 最后,单击"sort lines case sensitive"或"sort lines case insensitive"
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!
您需要选中“正则表达式”和“ . 匹配换行符”选项:
^ 匹配行的开头 .
^
(.*?) 匹配任何字符0次或更多次,但尽可能少(它与行完全匹配,因为". matches newline"选项,这是必需的) . 匹配的行被存储,因为括号周围可以使用 \1 访问
(.*?)
$ 匹配该行的结尾 .
$
\s+?^ 此部分匹配所有空格字符(换行符!),直到下一行的开头==>这将删除匹配行之后的换行符,以便替换后没有空行 .
\s+?^
(?=.*^\1$) 这是一个积极的先行断言 . 这是此正则表达式中的重要部分,只有在文件中的其他位置之后存在完全相同的行时,才会匹配(并删除)行 .
(?=.*^\1$)
Notepad++
更换窗口
确保在搜索模式下
您已选择正则表达式单选按钮
Find what:
^( . *)(\ r?\ n \ 1)$
Replace with:
1美元
before:
我们认为那里,我们认为有单行是否有可能
after:
我们认为有单行是否有可能
如果你不关心行顺序(我不认为你这样做),那么你可以使用Linux / FreeBSD / Mac OS X / Cygwin框并执行:
$ cat yourfile | sort | uniq > yourfile_nodups
然后在记事本中再次打开该文件 .
后一版本的Notepad根本不包含TextFX插件 . 为了使用插件来排序/消除重复项,必须下载并安装插件(更多涉及)或使用插件管理器添加插件 .
A)简单方法(如here所述) .
插件 - >插件管理器 - >显示插件管理器 - >可用选项卡 - > TextFX字符 - >安装
B)更多参与方式,如果需要另一个版本或简单方法不起作用 .
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 设置键盘快捷键 .
您可能需要一个插件才能执行此操作 . 您可以尝试ConyEdit的命令行 cc.ddl (删除重复行) . 它是文本编辑器的交叉编辑器插件,包括记事本 .
cc.ddl
With ConyEdit running in background, follow the steps below:
在文本末尾输入命令行 cc.ddl .
复制文本和命令行 .
粘贴,然后你会看到你想要的 .
Example
没有人为我工作 .
一个解决方案是:
更换
^(.*)\s+(\r?\n\1\s+)+$
同
搜索正则表达式: \b(\w+)\b([\w\W]*)\b\1\b
\b(\w+)\b([\w\W]*)\b\1\b
替换为: $1$2
$1$2
点击替换按钮直到文件中没有正则表达式的匹配项 .
插件管理器目前不可用(不随附发行版)用于记事本,您必须手动安装(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"在同一工作目录中,或通过它来引用它路径 .
cat your_file.txt | sort | uniq > your_file_edited.txt
10 回答
如果行紧接在一起,那么你可以使用正则表达式替换
搜索模式:
^(.*\r?\n)(\1)+
替换为:
\1
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"
Since Notepad++ Version 6 您可以在搜索和替换对话框中使用此正则表达式:
和 replace with nothing . 这将从文件中最后一次出现的所有重复行中留下 .
No sorting is needed for that and the duplicate rows can be anywhere in the file!
您需要选中“正则表达式”和“ . 匹配换行符”选项:
^
匹配行的开头 .(.*?)
匹配任何字符0次或更多次,但尽可能少(它与行完全匹配,因为". matches newline"选项,这是必需的) . 匹配的行被存储,因为括号周围可以使用\1
访问$
匹配该行的结尾 .\s+?^
此部分匹配所有空格字符(换行符!),直到下一行的开头==>这将删除匹配行之后的换行符,以便替换后没有空行 .(?=.*^\1$)
这是一个积极的先行断言 . 这是此正则表达式中的重要部分,只有在文件中的其他位置之后存在完全相同的行时,才会匹配(并删除)行 .Notepad++
确保在搜索模式下
您已选择正则表达式单选按钮
Find what:
Replace with:
before:
after:
如果你不关心行顺序(我不认为你这样做),那么你可以使用Linux / FreeBSD / Mac OS X / Cygwin框并执行:
然后在记事本中再次打开该文件 .
后一版本的Notepad根本不包含TextFX插件 . 为了使用插件来排序/消除重复项,必须下载并安装插件(更多涉及)或使用插件管理器添加插件 .
A)简单方法(如here所述) .
插件 - >插件管理器 - >显示插件管理器 - >可用选项卡 - > TextFX字符 - >安装
B)更多参与方式,如果需要另一个版本或简单方法不起作用 .
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 设置键盘快捷键 .
您可能需要一个插件才能执行此操作 . 您可以尝试ConyEdit的命令行
cc.ddl
(删除重复行) . 它是文本编辑器的交叉编辑器插件,包括记事本 .With ConyEdit running in background, follow the steps below:
在文本末尾输入命令行
cc.ddl
.复制文本和命令行 .
粘贴,然后你会看到你想要的 .
Example
没有人为我工作 .
一个解决方案是:
更换
同
搜索正则表达式:
\b(\w+)\b([\w\W]*)\b\1\b
替换为:
$1$2
点击替换按钮直到文件中没有正则表达式的匹配项 .
插件管理器目前不可用(不随附发行版)用于记事本,您必须手动安装(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"在同一工作目录中,或通过它来引用它路径 .