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

sed中$字面量匹配疑问:为何${projects.version}能被正常替换?

为什么sed中$在两种场景下表现不同?

sed默认使用基本正则表达式(BRE),$的特殊含义仅在特定场景生效:

  • 当$出现在正则表达式的末尾位置时,它才是行尾锚点,用来匹配一行的结束位置,比如sed -e 's/world$/test/g' test.txt里的$就是这种情况,所以能精准匹配行尾的"world"。
  • 当$后面还有其他字符(比如你的例子里的{),它就会被当作普通的字面量字符处理,不会触发行尾锚点的功能。

在命令sed -e 's/${projects.version}/20.0/g' test.txt中,${projects.version}里的$后面紧跟着{,并非正则的末尾,所以sed把它当作普通字符,整个${projects.version}会作为字面字符串去匹配替换。

如果你的目标是匹配行尾的{projects.version},需要把$放在正则的末尾,比如写成sed -e 's/{projects.version}$/20.0/g' test.txt,这时候$才会作为行尾锚点生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 02:45:35