Sublime Text如何删除重复行_Sublime删除重复行技巧
Sublime Text的Remove Duplicate Lines命令仅删除相邻重复行,因其逐行比对且仅匹配上一行完全相同的行;非相邻重复、空白符或换行符差异均导致失效。 这里先说一个核心判断:Sublime Text 自带的 Remove Duplicate Lines 命令,并不能实现真正的
Sublime Text的Remove Duplicate Lines命令仅删除相邻重复行,因其逐行比对且仅匹配上一行完全相同的行;非相邻重复、空白符或换行符差异均导致失效。

这里先说一个核心判断:Sublime Text 自带的 Remove Duplicate Lines 命令,并不能实现真正的全局去重。它只删相邻的重复行;要想彻底清理所有重复项,必须先排序,或者干脆换用正则表达式乃至插件。
为什么 Remove Duplicate Lines 总是漏删?
这个命令的底层逻辑其实很简单:它只会逐行比对,并且只删除和**上一行内容完全相同**的那一行。这就意味着,只要两行内容是重复的,但中间被其他内容隔开了,它就完全识别不出来。
- 举个例子,如果三行的顺序是
apple→banana→apple,第二个apple是不会被删除的。 - 更隐蔽的是,任何细微的格式差异,比如空格、制表符、BOM、甚至是换行符的不同(
\r\n对比\n),都会导致它判定为“不同行”,哪怕肉眼看起来一模一样。 - 它既不区分大小写,也不会自动忽略行首行尾的空白——所以
hello(末尾带空格)和hello会被视为两行不同的内容。
可靠去重三步法:排序 + 正则替换
如果不打算安装插件,那么“排序后正则替换”是兼容性最好、无论文件大小都相对稳妥的方法。关键在于正则表达式的写法和执行节奏:
- 首先,全选文本(
Ctrl+A或Cmd+A)。 - 调出命令面板(
Ctrl+Shift+P),输入Sort Lines并回车,让所有行按字母顺序排列。 - 接着,打开替换面板(
Ctrl+H),务必勾选Regular Expression(也就是点击那个.*图标)。 - 在查找框填入:
^(.*$)\n^\1$,替换框留空。 - 点击
Replace All。如果提示“0 occurrences found”,说明重复项已清理完毕;否则,可以再点击一次,确保万无一失。
需要留意的是,正则中的 \n 在Windows格式的文件里可能无法匹配 \r\n。保险起见,可以尝试使用 ^((?s:.*))$\s+^$,不过在大多数情况下,原来的表达式就够用了。
想保留原始顺序?别用 Sort Lines,改用插件或 Python 控制台
内置功能无法在去重的同时保留行序,强行排序会打乱原有的数据逻辑,比如日志的时间线或者代码的执行顺序。这时候,有两条更实用的路径:
- 安装
Find Duplicate Lines这类插件。安装后,全选文本,打开命令面板输入Remove All Duplicates,它会自动保留首次出现的行,并删除后续的重复项。 - 或者,使用 Sublime Text 内置的 Python 控制台(快捷键
Ctrl+`),粘贴并运行以下脚本:import sublime, sublime_plugin view = sublime.active_window().active_view() regions = view.sel() if not regions: regions = [sublime.Region(0, view.size())] for region in regions: lines = view.substr(region).splitlines(keepends=True) seen = set() unique_lines = [] for line in lines: if line not in seen: seen.add(line) unique_lines.append(line) view.replace(sublime.Edit(), region, ''.join(unique_lines))这段代码会严格按行字符串进行全局判重,不碰空格、不排序、也不会丢失换行符。
大文件(10 万行以上)或需条件去重时,别在 Sublime 里硬扛
当面对海量文本或需要更复杂的去重条件时,Sublime Text 内置的正则引擎可能会卡顿甚至无响应。而且,它原生不支持“按指定列去重”、“忽略大小写”或“跳过空行”等常见需求。
- 在终端里,一行命令就能搞定(Linux/macOS):
sort -u input.txt > output.txt - Windows PowerShell 用户可以用:
Get-Content input.txt | Sort-Object -Unique | Set-Content output.txt - 如果需要保留原始顺序并进行复杂过滤?直接写个 Python 脚本最省心:
python3 -c "import sys; seen=set(); [print(l, end='') for l in sys.stdin if l not in seen and not seen.add(l)]"
最后必须警惕的是:Sublime Text 的任何去重操作都不会自动备份。在处理前,务必通过 File → Sa ve As… 另存一个副本。尤其是使用正则表达式反复点击 Replace All 时,一旦操作失误,很难回退到之前的状态。
Adobe Acrobat Pro 是面向办公、法务、财务、教育及出版用户的专业PDF处理软件,可在Mac上创建、编辑、转换、合并和保护文档,并提供OCR文字识别、表单、批注、内容比较、敏感信息遮盖及电子签名功能。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
Shapr3D是一款面向工业设计、机械工程、建筑概念和三维打印工作流的CAD软件。Mac版采用Parasolid建模内核,支持草图约束、实体建模、工程图、可视化渲染及常见CAD格式交换,并可通过账户在多台设备之间同步项目。
AutoCAD 是 Autodesk 推出的专业计算机辅助设计软件,Windows 版支持精确二维绘图、三维实体与曲面建模、图纸标注、布局发布和任务自动化,并包含多套行业专业化工具组合,适用于建筑、机械、电气、工程建设及制造设计人员。
Adobe Acrobat Pro 是面向专业 PDF 工作的综合解决方案,可在 Windows 中创建、编辑、转换、比较、整理和保护文档,并支持表单、电子签名、扫描件文字识别及敏感信息永久遮盖。订阅还包含网页、移动服务和云端协作能力,
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。













