用。。。来代替 ”\/”

Mor*_*rph 4 sed

我有一个/tmp/testing要替换的字符串\/tmp\/testing

sed 工作正常如下:

echo testdir=/tmp/testing | sed 's/\//\\\//g'
testdir=\/tmp\/testing
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试将其放入稍后要使用的变量中,则会出现此错误:

myvar=`echo testdir=/tmp/testing | sed 's/\//\\\//g'`
sed: -e expression #1, char 9: unknown option to `s'
Run Code Online (Sandbox Code Playgroud)

请问有什么想法吗?

roa*_*ima 10

反引号`...`增加了需要另一组\转义的间接级别。如果您$( ... )改用它,它会按预期正常工作:

myvar=$(echo testdir=/tmp/testing | sed 's/\//\\\//g')
echo "$myvar"
testdir=\/tmp\/testing
Run Code Online (Sandbox Code Playgroud)

如果您坚持使用反引号,这将起作用:

myvar=`echo testdir=/tmp/testing | sed 's/\//\\\\\//g'`
echo "$myvar"
testdir=\/tmp\/testing
Run Code Online (Sandbox Code Playgroud)


tac*_*omi 5

尝试这个

$ echo testdir=/tmp/testing | sed 's/\//\\\//g'
testdir=\/tmp\/testing
Run Code Online (Sandbox Code Playgroud)

在变量中

var=$(echo testdir=/tmp/testing | sed 's/\//\\\//g')
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,在令人困惑的上下文中,您不必在 sed 中使用“/”,您可以将其替换为任何其他字符。所以这将起到相同的作用:`'s#/#\\/#g'` (3认同)