相关疑难解决方法(0)

Bash sed 替换双美元符号 $$ 扩展正则表达式

这个命令:

echo '$$foo=bar' | sed -E "s/(\$\$foo=).*/\1$(echo hello)/"
Run Code Online (Sandbox Code Playgroud)

输出:

$$foo=bar
Run Code Online (Sandbox Code Playgroud)

如果我将sed's 引号更改为单引号并将命令括在双引号中:

echo '$$foo=bar' | sed -E 's/(\$\$foo=).*/\1'"$(echo hello)"'/'
Run Code Online (Sandbox Code Playgroud)

它输出所需的结果:

$$foo=hello
Run Code Online (Sandbox Code Playgroud)

所以我想问题出在扩展的正则表达式和引号上,除非我遗漏了一些明显的东西。

  1. sed在命令替换中连接单引号和双引号是一个好的做法( sed 's/foo/'"$(command)"'/')吗?

  2. 如何使用sed扩展正则表达式转义双美元符号?

sed regular-expression

4
推荐指数
1
解决办法
6892
查看次数

标签 统计

regular-expression ×1

sed ×1