是否有可能在notepad++中删除重复的行,只留下一行的单一出现?


当前回答

notepad++的插件管理器目前不可用(不随发行版提供)。你必须手动安装它(https://github.com/bruderstein/nppPluginManager/releases),即使你这样做,很多插件是不可用的(没有TextFX)插件。

也许有另一个插件包含所需的功能。除此之外,在notepad++中做到这一点的唯一方法是使用一些特殊的正则表达式进行匹配,然后替换(Ctrl + F→替换选项卡)。

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

如果你有Windows 10,那么你可以启用Bash(只需在微软商店中输入Ubuntu,并按照说明安装它),并使用cat your_file.txt | sort | uniq > your_file_editing .txt。当然,你必须在与“your_file.txt”相同的工作目录中,或者通过它的路径引用它。

其他回答

在NPP很难做到这一点。 更好的方法是:

下载cygwin实用程序,这是一个简单的Linux终端在windows下。 它允许在Windows中执行任何Linux命令。 这里是排序-u。

扩展顶部的答案,还可以使用第二个前向查找几乎与其他行重复的行。

^(±s * (< PackageReference包括=”。* * *版=)。*)$±s +?^(?=.*^\ 2 . *美元)

这里我在多次引用同一个<PackageReference Include="。字符串,不管它的版本。

测试数据

<PackageReference Include="Package1" Version="2.2.1" />

    <PackageReference Include="Package1" Version="2.2.1" /> // Match
<PackageReference Include="Package1" Version="2.2.2" />

<PackageReference Include="Package2" Version="5.1" /> // Match
<PackageReference Include="Package2" Version="5.2" />

<PackageReference Include="Package3" Version="2.2.1" /> // No match
<PackageReference Include="Package4" Version="2.2.1" />

查看regex术语含义的详细说明,并尝试使用这个regex101共享中的您自己的数据。

如果行是紧挨着的,那么你可以使用正则表达式替换:

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

替换为:\1

没有一个对我有效。

解决方案是:

取代

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

with

\1

notepad++的后一个版本显然根本不包括TextFX插件。为了使用插件排序/消除重复,必须下载并安装插件(更复杂)或使用插件管理器添加插件。

A)简单的方法(如这里所述)。

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

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

从SourceForge下载插件: http://downloads.sourceforge.net/project/npp-plugins/TextFX/TextFX%20v0.26/TextFX.v0.26.unicode.bin.zip 打开压缩文件,解压“NppTextFX.dll” 将NppTextFX.dll放在notepad++插件目录中,例如: C:\Program Files\ notepad++ \ plugins 启动notepad++, TextFX将是文件菜单项之一(如Colin Pickard上面的答案#1所示)

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

另外,如果你经常使用这个命令,或者想复制一个键盘快捷方式,比如在TextPad中使用F9进行排序,可以考虑使用Settings >快捷方式映射器来设置一个键盘快捷方式。