notepad++ 删除所有重复行(含非相邻)需用“加序号→排序→正则删相邻重复→删序号”四步法:先column mode插入行号锚定原序,再按内容升序排列,接着用正则^(.*\r?\n)\1+匹配并保留首行,最后删除序号列。

Notepad++ 删除重复行的正确入口在哪
Notepad++ 本身没有“一键去重”按钮,TextFX 插件早已被官方移除,现在靠原生功能只能间接实现。真正能用的是「行排序 + 正则去重」组合,或者启用内置的 Remove Consecutive Duplicate Lines(仅删相邻重复)。
怎么用原生功能删掉所有重复行(非相邻也删)
核心思路:先排序让重复行挨在一起,再删相邻重复,最后按原始顺序恢复——但 Notepad++ 不支持“稳定排序”,所以必须加一列序号锚定原始位置。
- 在每行开头插入行号:
Search → Column Mode Edit → Insert Number,起始值填1,增量1 - 全选 →
Edit → Line Operations → Sort Lines Lexicographically Ascending(此时带序号的行已按内容排序) - 执行正则替换:
Search → Replace,勾选Regular expression,查找:^(.*\r?\n)\1+,替换为:\1 - 删掉最左列序号:
Column Mode Edit选中序号列,按Delete
为什么不能直接用“Remove Consecutive Duplicate Lines”
这个命令只处理连续出现的重复行,比如:
apple apple banana apple
它只会删掉前两个 apple 中的一个,留下第三个 apple —— 因为它和上一行 banana 不同。实际场景中重复行往往分散,这个功能基本等于没用。
常见错误:正则替换失效或删错行
主要因为换行符类型不一致(\r\n vs \n)或未开启正则模式。
- 确保
Search Mode下拉菜单选的是Regular expression,不是Normal或Extended - 如果文本来自 Linux/macOS,把正则中的
\r?\n改成\n;Windows 文本保留\r?\n -
^(.*\r?\n)\1+里的^和$依赖“matches newline”未勾选,否则会跨行匹配出错 - 别用
.*匹配含制表符或空格的行——改用[^\r\n]*更稳











