You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用sed正则命令实现跨行替换decrypt_aes()包裹的内容

sed 跨行匹配替换实现方案

sed默认按单行逐行处理文本,无法直接识别跨换行的语法结构,针对你要替换的跨行decrypt_aes()包裹场景,可使用以下命令完成替换:

适配固定两行结构的命令

如果你的代码都是固定的「decrypt_aes(单独占一行末尾,token字符串缩进后在下一行,行尾带闭合)」的格式,用这个轻量命令即可:

sed -i 'N;s/decrypt_aes(\n[[:space:]]*\(.*\))/\1/;P;D' 待处理的文件路径

参数说明:

  • N:将下一行内容追加到当前处理缓冲区,两行内容以换行符\n分隔,实现跨行内容的匹配
  • 正则部分:匹配decrypt_aes(+换行+第二行开头的任意缩进空白,捕获引号包裹的token值和末尾的闭合),直接替换为捕获到的token内容
  • P;D:打印处理完的第一行、删除缓冲区中已处理的第一行内容,循环执行后续逻辑,可支持文件中存在多处同类跨行结构的替换场景

适配非固定格式的通用命令

如果存在缩进不统一、括号和内容之间有空行的情况,可以用循环读行的通用写法,匹配任意跨行的decrypt_aes()包裹结构:

sed -i ':a;N;$!ba;s/decrypt_aes([[:space:]]*\n[[:space:]]*\(.*\))/\1/g' 待处理的文件路径

参数说明:

  • :a:定义循环标记位
  • N;$!ba:持续将后续行读入处理缓冲区,直到读到文件末尾才停止循环
  • 正则替换逻辑和单行逻辑一致,只是支持匹配跨换行的空白字符

注意:正式执行原地修改前,可以先去掉命令里的-i参数运行,预览输出的替换结果是否符合预期,确认无误后再加-i执行原地修改,避免误改文件内容。

内容的提问来源于stack exchange,提问作者tough chow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 19:30:11