Sublime Text 内置 Sort Lines (Unique) 仅能去重相邻重复行,非相邻重复需用正则匹配或外部工具如 awk、Python 处理,且需注意换行符统一和空白字符处理。
Sublime Text 去重用
会误删非重复行
直接选中全文后点
,看起来去重了,其实只是把行按字母序排好,相同内容的行被挤到一起,但没删——你得手动再删重复。这不是去重,是排序。
真正去重必须配合「唯一性过滤」操作:
全选文本(
或
)
打开命令面板(
/
)
输入
,选中
—— 注意括号里带
的那个
这个命令本质是先排序、再合并相邻重复行,所以要求重复行必须挨着。如果原始文本里重复行分散在不同位置,它就无效。
重复行不相邻时,得用正则 +
手动清理
比如日志里同一错误反复出现,但中间夹着时间戳或随机 ID,
就完全失效。
这时候得靠正则匹配「整行内容」并标记所有重复项(保留第一个):
打开查找(
/
),勾选
和
输入正则:
—— 匹配连续出现的完全相同的行
但这个只能处理紧邻重复;更通用的是先用
查找所有「后面还有相同行」的行(需开启
)
点击
,然后
把所有匹配转为多光标,再按
删掉——注意别删第一处
风险点:正则里
和
在 Sublime 中默认按 \n 分界,但 Windows 换行符是
,若文件混用换行符,
可能错位,建议先统一用
。
插件
看似方便,实则不可靠
很多人搜教程装了同名插件,结果发现它只删「完全相同的连续行」,和内置
能力差不多,甚至更弱——不排序、不保证顺序、不支持跨段落去重。
仿Sublime和notepad++编辑器效果
仿Sublime和notepad++编辑器效果
下载
而且该插件已多年未更新,Sublime Text 4 下部分功能失效,比如对大文件(>50MB)会卡死或静默失败。
如果你真需要稳定去重,推荐用外部工具:保存文件后,在终端运行
或者用 Python 一行:
Sublime 内置的
命令(需安装 Package Control 后搜索安装)比插件更轻量,支持正则过滤,但同样不解决「非相邻重复」问题
去重后顺序乱了?那是你没关掉
步骤
本质是「排序 + 去重」,原始顺序必然丢失。如果业务要求保留首次出现顺序(比如配置项、URL 列表),就不能用它。
此时唯一办法是导出后用脚本处理,例如 Python:
注意
很关键——否则
和
(带空格)会被视为不同行;而 Sublime 自带功能完全不处理首尾空白,容易漏掉逻辑重复。
真正的难点从来不在「怎么点菜单」,而在你是否清楚:重复的定义是什么?是整行字符一致,还是语义等价?后者 Sublime 做不了,得换工具。
Sort LinesEdit → Sort LinesCtrl+ACmd+ACtrl+Shift+PCmd+Shift+PSort LinesSort Lines (Unique)UniqueFind AllSort Lines (Unique)Ctrl+FCmd+FRegular ExpressionWhole Line^(.*)(\n\1)+$^([^\r\n]+)\r?\n(?=.*^\1$)Dot matches newlineFind AllCtrl+Shift+LDelete^$\r\n^File → Line Endings → UnixRemove Duplicate LinesSort Lines (Unique)awk '!seen[$0]++' file.txt > dedup.txtpython3 -c "print(''.join(dict.fromkeys(open('file.txt'))))" > dedup.txtFilter LinesSortSort Lines (Unique)with open('input.txt') as f:
seen = set()
for line in f:
line = line.rstrip('\n\r')
if line not in seen:
print(line)
seen.add(line)line.rstrip()'abc''abc '