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

sed使用含多分支的分组正则表达式时替换失效,请求排查解决

sed多分支正则替换失效的解决办法

你的问题出在BSD sed的正则语法兼容性上——从-i ''的写法能判断你用的是macOS自带的BSD sed,它默认使用基础正则表达式(BRE),而你写的(feature|bug|security)是扩展正则(ERE)的语法,BRE里|和()都不具备分支、分组功能,必须转义或者切换到扩展正则模式才能生效。

两种解决方式:

方式1:转义基础正则里的特殊字符

把分组括号和分支符都加上反斜杠转义,命令改成:

sed -i '' 's/^\(feature\|bug\|security\)/replacement/g' change.md

方式2:启用扩展正则模式

添加-E选项直接使用扩展正则语法,无需转义:

sed -i '' -E 's/^(feature|bug|security)/replacement/g' change.md

测试你的目标文件,执行任意一个命令后,所有行首的feature、bug都会被替换成replacement,比如feature:foo会变成replacement:foo,bug: bar变成replacement: bar。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:20:19