用双引号括起来的双反斜杠替换正斜杠

wa4*_*557 9 linux bash sed

我拼命试图/用双引号括起来的双反斜杠替换正斜杠("\\")

a=`echo "$var" | sed 's/^\///' | sed 's/\//\"\\\\\"/g'`
Run Code Online (Sandbox Code Playgroud)

不起作用,我不明白为什么.它总是只用一个反斜杠替换而不是两个

pio*_*kuc 24

如果/是要用s(替换)命令替换的正则表达式的一部分,则sed可以在命令的语法中使用其他字符而不是斜杠,因此您可以编写,例如:

sed 's,/,\\\\,g'
Run Code Online (Sandbox Code Playgroud)

使用上面,代替通常的斜杠来分隔s命令的两个参数:描述要替换的部分的正则表达式和用作替换的字符串.

以上将用两个反斜杠替换每个斜杠.反斜杠是一个特殊的(引用)字符,因此必须引用它,这里引用它,这就是为什么我们需要4个反斜杠来表示两个反斜杠.

$ echo /etc/passwd| sed 's,/,\\\\,g'
\\etc\\passwd
Run Code Online (Sandbox Code Playgroud)


gni*_*urf 18

这个怎么样?

a=${var//\//\\\\}
Run Code Online (Sandbox Code Playgroud)

在shell中演示:

$ var=a/b/c
$ a=${var//\//\\\\}
$ echo "$a"
a\\b\\c
Run Code Online (Sandbox Code Playgroud)