这个命令:
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)
所以我想问题出在扩展的正则表达式和引号上,除非我遗漏了一些明显的东西。
sed
在命令替换中连接单引号和双引号是一个好的做法( sed 's/foo/'"$(command)"'/'
)吗?
如何使用sed
扩展正则表达式转义双美元符号?