使用正则添加换行符:Mac下30万行文本匹配(7位数字)需求
解决方案:处理大文本文件的正则换行需求
嘿,针对你处理30万行大文本的需求,我给你整理了几个可行的方案,不管是用你当前的Sublime Text,还是Mac上更适合大文件的工具都能搞定:
一、Sublime Text 操作步骤
Sublime Text 支持正则查找替换,处理大文件表现还不错,操作如下:
情况1:保留开头的(,让每行以(1234567)开头
分两步操作更清晰,避免复杂正则出错:
清除第一个目标括号前的内容
- 按
Cmd+Opt+F调出查找替换面板 - 勾选「正则表达式」(面板左侧的
.*图标) - 查找框输入:
^.*?(?=\(\d{7}\)) - 替换框留空,点击「替换全部」
这一步会把文本开头到第一个(7位数字)之前的所有内容删掉,让第一个目标括号直接顶到行首。
- 按
给后续所有目标括号前添加换行
- 查找框输入:
(?<!\n)\(\d{7}\) - 替换框输入:
\n\0(\0代表匹配到的整个括号内容) - 点击「替换全部」
这一步会给所有不在行首的(7位数字)前面加换行,确保每个目标内容都单独成行且位于行首。
- 查找框输入:
情况2:去掉开头的(,让每行以1234567)开头
同样分两步:
清除第一个目标括号前的内容及开头的
(- 查找框输入:
^.*?(?=\(\d{7}\))\( - 替换框留空,点击「替换全部」
- 查找框输入:
给后续所有目标括号前添加换行并去掉
(- 查找框输入:
(?<!\n)\((\d{7})\) - 替换框输入:
\n$1)($1代表匹配到的7位数字) - 点击「替换全部」
- 查找框输入:
注意:如果文件特别大,建议关闭「查找全部」功能,直接用「替换全部」,避免Sublime加载过多内容卡顿。
二、Mac 终端工具(更适合超大型文件)
对于30万行的大文件,终端的sed命令处理效率更高,不会出现编辑器卡顿的情况,操作前记得先备份原文件!
情况1:保留(的合并命令
sed -E 's/^.*?(?=\([0-9]{7}\))//; s/([^\n])\(([0-9]{7})\)/\1\n\(\2\)/g' 你的文件名.txt > 输出文件名.txt
情况2:去掉(的合并命令
sed -E 's/^.*?(?=\([0-9]{7}\))\(//; s/([^\n])\(([0-9]{7})\)/\1\n\2)/g' 你的文件名.txt > 输出文件名.txt
三、替代工具:BBEdit
如果你想换个Mac平台的专业文本编辑器,BBEdit处理大文件的能力很强,操作逻辑和Sublime一致,直接用上面的正则表达式进行查找替换即可。
内容的提问来源于stack exchange,提问作者rbarab




