Notepad++ 无原生“删除所有重复行”功能,Remove Consecutive Duplicate Lines 仅处理相邻重复行;稳妥方案是先升序排序使重复行聚集,再用正则 ^(.*\r?\n)\1+ 替换为 \1 实现全局去重。

Notepad++ 没有“删除所有重复行”的原生功能,Remove Consecutive Duplicate Lines 只能删掉紧挨着的重复行,对分散出现的重复完全无效——这不是 bug,是设计限制。
为什么 Remove Consecutive Duplicate Lines 基本不能用
这个命令藏在 Edit → Line Operations → Remove Consecutive Duplicate Lines,但它只比对相邻两行是否字面完全一致:
- 如果文本是
apple、banana、apple,它不会删第三个apple,因为前一行是banana - 首尾空格、制表符
\t、大小写差异(Apple≠apple)都会导致匹配失败 - 它不记录已见过的内容,无法实现全局哈希去重
用 Sort Lines Lexicographically Ascending + 正则最稳妥
这是唯一不依赖插件、兼容所有 Notepad++ 版本(包括最新 7.9+)的通用方案。关键在于先让重复行聚集,再用正则精准保留首次出现的那行:
- 全选文本(
Ctrl + A),执行Edit → Line Operations → Sort Lines Lexicographically Ascending - 按
Ctrl + H打开替换窗口,Search Mode 必须选Regular expression - 查找目标填:
^(.*\r?\n)\1+(Windows 文本)或^(.*\n)\1+(Linux/macOS 文本) - 替换为填:
\1(不是留空!否则会多删一行) -
务必取消勾选
Matches newline,否则^和$会跨行生效,误删整段 - 若行中含制表符或混合空格,把
.*换成[^\r\n]*更稳,即:^([^\r\n]*\r?\n)\1+
想保留原始顺序?必须加序号锚点再排序
Notepad++ 排序不是稳定排序,直接排完就再也回不到原来顺序。要保序,得靠人工插入序号作为位置锚点:
- 先用
Search → Column Mode Edit → Insert Number,起始值填1,增量填1,在每行最左插入序号 - 全选 → 升序排序(此时内容排序,序号跟着动)
- 执行正则:
^(.*\r?\n)\1+→\1 - 最后用列编辑(
Alt+ 鼠标拖选)框住左侧序号列,按Delete清除
漏掉序号插入,就永远丢失原始顺序;漏掉序号清除,结果里会残留数字——这两步都不可跳过。


















