You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

使用正则添加换行符:Mac下30万行文本匹配(7位数字)需求

解决方案:处理大文本文件的正则换行需求

嘿,针对你处理30万行大文本的需求,我给你整理了几个可行的方案,不管是用你当前的Sublime Text,还是Mac上更适合大文件的工具都能搞定:

一、Sublime Text 操作步骤

Sublime Text 支持正则查找替换,处理大文件表现还不错,操作如下:

情况1:保留开头的(,让每行以(1234567)开头

分两步操作更清晰,避免复杂正则出错:

  1. 清除第一个目标括号前的内容

    • Cmd+Opt+F 调出查找替换面板
    • 勾选「正则表达式」(面板左侧的.*图标)
    • 查找框输入:^.*?(?=\(\d{7}\))
    • 替换框留空,点击「替换全部」
      这一步会把文本开头到第一个(7位数字)之前的所有内容删掉,让第一个目标括号直接顶到行首。
  2. 给后续所有目标括号前添加换行

    • 查找框输入:(?<!\n)\(\d{7}\)
    • 替换框输入:\n\0\0代表匹配到的整个括号内容)
    • 点击「替换全部」
      这一步会给所有不在行首的(7位数字)前面加换行,确保每个目标内容都单独成行且位于行首。

情况2:去掉开头的(,让每行以1234567)开头

同样分两步:

  1. 清除第一个目标括号前的内容及开头的(

    • 查找框输入:^.*?(?=\(\d{7}\))\(
    • 替换框留空,点击「替换全部」
  2. 给后续所有目标括号前添加换行并去掉(

    • 查找框输入:(?<!\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

火山引擎 最新活动