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

sed正则替换报错:Invalid content of \{\},求问题排查与解决

sed正则替换报错排查与修复

问题重现

执行以下sed命令时抛出语法错误:

sed -i -E 's/(={|=")([^}]+)(}"|})/\2/g' "$filename"

错误信息:

sed: -e expression #1, char 27: Invalid content of \{\}

目标是匹配="{123}"或={text}这类结构,提取并替换为大括号内的内容。

问题根源

你使用的是BSD sed(比如macOS系统默认的sed版本),它的扩展正则语法和regex验证工具默认的PCRE引擎存在差异。在BSD sed的字符集表达式中,}属于特殊字符,必须转义才能被当作普通字符处理,否则会被误判为量词语法的一部分,触发语法错误。

修复方案

适配BSD sed的修正命令

将字符集里的}转义即可:

sed -i -E 's/(={|=")([^\}]+)(}"|})/\2/g' "$filename"

跨平台兼容写法

如果需要同时兼容GNU sed(Linux系统默认版本)和BSD sed,需调整-i参数的写法(BSD sed要求-i指定备份后缀,空字符串表示不创建备份):

sed -i '' -E 's/(={|=")([^\}]+)(}"|})/\2/g' "$filename"

GNU sed也能识别这种写法,不会出现兼容性问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 05:43:12