如何使用 sed 将字符串中变量前面的美元符号替换为中文字符?

我正面临将下列字符串:

"count: $OFF_COUNT times"

替换为:

"count: " .. OFF_COUNT .. " 次"

我尝试了以下命令:

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

但是没有产生任何效果,输出结果和输入一样。

点赞
用户6770384
用户6770384

你几乎有正确的命令了。唯一的问题是在基本 sed 语法中,+ 是一个文字(等同于 [+])。引用自 sed附录 A:扩展正则表达式

基本和扩展正则表达式之间的唯一区别在于一些字符的行为:?+,括号和花括号( {})。

[...]

c\+ 使用扩展正则表达式时,变为 c+。它匹配一个或多个 'c'。

要启用 + 的常规含义,使用 \+

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

或者使用扩展的 sed 语法

sed -E 's/\$([A-Z0-9_]+)\b/" .. \1 .. "/g'
2019-02-23 20:34:16