如何用sed替换字符串中变量之前的美元符号?

问题描述 投票:-1回答:1

我有问题替换:

"count: $OFF_COUNT times"

有:

"count: " .. OFF_COUNT .. " times"

我试过了:

sed 's/\$\([A-Z0-9_]+\)\b/" .. \1 .. "/g'

但是,它没有任何效果。

只是一个不变的输出。

regex bash lua
1个回答
1
投票

你几乎得到了正确的命令。唯一的问题是,在基本的sed语法中,+是一个文字(相当于[+])。引自sedAppendix A Extended regular expressions

基本和扩展正则表达式之间的唯一区别在于几个字符的行为:?+,括号和大括号({})。 [...] 当使用扩展正则表达式时,c\+成为c+。它匹配一个或多个'c'。

要启用+的通常含义,请写\+

sed 's/\$\([A-Z0-9_]\+\)\b/" .. \1 .. "/g'

或使用扩展的sed语法

sed -E 's/\$([A-Z0-9_]+)\b/" .. \1 .. "/g'
© www.soinside.com 2019 - 2024. All rights reserved.