要删除含ERROR的整行,需用正则^.ERROR.$并启用.匹配换行符关闭、锚点正确、元字符转义、大小写按需开启;删空行应使用^\s*$而非^$;大文件慎用Replace All,优先命令行处理。

用 ^.*关键词.*$ 匹配整行再删,不是只搜关键词
直接搜 ERROR 然后点 Replace All,只会把文本里的 ERROR 替换成空,留下前后内容和换行符,结果是半截行、格式错乱。真正要删的是“整行”,必须靠正则锚定。
关键操作:打开 Ctrl+H → 勾选右下角 .*(启用正则)→ 在 Find What 输入:^.*ERROR.*$ → Replace With 留空 → 点 Replace All。
-
^和$是行首/行尾锚点,没它们就不是“整行” - 如果关键词含正则元字符(如
.、*、[),得转义:删含file.txt的行,得写^.*file\.txt.*$ - 区分大小写?点左下角
Aa开启Match Case;否则error和Error都会被删
. matches newline 必须关掉,否则 .* 会吞掉换行符
这个选项一旦开着,^.*ERROR.*$ 可能跨多行匹配——比如 log("start");\n\nERROR: timeout\nconsole.log("end"); 会被当成一行,全删掉,只剩 console.log("end");,代码直接崩。
右下角那个 \n 图标不能高亮,它默认是关闭的,但打开过一次就容易忘关。每次删行前手动确认一遍。
- 开
. matches newline:.能匹配 \n,.*就不再限于单行 - 关掉它,
.*只在当前行内匹配,安全 - Sublime 不支持
\R这种通用换行符写法,别试
删空行或伪空行,用 ^\s*$,不是 ^$
^$ 只能匹配“真正什么都没有”的行,但实际文件里常有末尾带空格、Tab、甚至全角空格的“伪空行”,^$ 完全无视它们。而 ^\s*$ 中的 \s 天然覆盖空格、\t、\r、\n、全角空格(\u3000)等,才是真·通用。
- 文件结尾没换行符时,最后一行空行可能不被
^\s*$捕获——那是 EOF 前的视觉残留,得手动删或全选后再替换 - Python 或 YAML 里靠空行分隔逻辑块,全删可能破坏缩进语义,删之前先想清楚这行是不是真“冗余”
- 别用
\n\n替换压缩空行:Windows 是\r\n,\n\n根本不匹配,跨平台失效
大文件慎用 Replace All,卡死或丢数据不是危言耸听
10MB 以上的日志或生成代码,Replace All 容易让 Sublime 无响应,甚至中途崩溃导致内容丢失。这不是性能问题,是 Sublime 对大文本正则引擎的固有限制。
- 先点
Find All看匹配数量,超 5000 行就别一股脑全替 - 用
Ctrl+A全选,再勾选In Selection,把替换范围锁死 - 操作前务必
Ctrl+S保存,或确保Settings → atomic_save: true - 终极方案:命令行更稳,比如
sed '/ERROR/d' file.txt > clean.txt
正则删行看着只是填个表达式,但锚点、换行符、大小写、文件尺寸这四点一叠加,错一个就白干。动手前先看右下角状态栏的换行格式(LF/CRLF),再决定用 ^\s*\r?\n 还是保守点分段处理。

















