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

时间:2019-02-23 20:15:05

标签: regex bash lua

我在替换时遇到问题

"count: $OFF_COUNT times"

具有:

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

我尝试过:

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

但是,它没有任何作用。

输出不变。

1 个答案:

答案 0 :(得分:1)

您几乎输入了正确的命令。唯一的问题是,在基本的sed语法中,+是一个文字(相当于[+])。引用sed的{​​{3}}:

  

基本正则表达式和扩展正则表达式之间的唯一区别是   一些字符的行为:?+,括号和大括号   ({}
  [...]
  c\+       使用扩展的正则表达式时,将变为c+。它与一个或多个“ c”匹配。

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

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

或使用扩展的sed语法

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