我目前正在运行以下命令并获得“替换中的错误选项”错误。我想要做的是在我替换的字符串中添加反斜杠,但我无法这样做。有什么想法吗?
代码:
VAR="/host/test"
echo ${VAR} | sed -e "s/\//\\\//g"
答案 0 :(得分:3)
为什么要使用sed?
$ echo "${VAR//\//\\/}"
\/host\/test
它看起来有点可怕,但它工作正常。请参阅https://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion中的${parameter/pattern/string}
。
您的问题发生是因为您在sed代码周围使用双引号("
),而不是单引号('
)。
在双引号中,\\
被解释为单个\
的转义序列,因此sed最终看到的代码是:
$ echo "s/\//\\\//g"
s/\//\\//g
#^ ^ ^
sed将其读作"搜索\/
并将其替换为\\
,/g
作为选项"。这是一个错误,因为/
不是有效选项。