10

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

a=`echo "$var" | sed 's/^\///' | sed 's/\//\"\\\\\"/g'`

不起作用,我不知道为什么。它总是只替换一个反斜杠而不是两个

4

3 回答 3

27

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

sed 's,/,\\\\,g'

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

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

$ echo /etc/passwd| sed 's,/,\\\\,g'
\\etc\\passwd
于 2013-06-29T10:41:21.667 回答
21

这个怎么样?

a=${var//\//\\\\}

在 shell 中演示:

$ var=a/b/c
$ a=${var//\//\\\\}
$ echo "$a"
a\\b\\c
于 2013-06-29T10:38:35.817 回答
0

另一种方法:tr '/' '\'

$ var=a/b/c
$ echo "$var"
a/b/c
$ tr '/' '\' <<< "$var"
a\b\c
于 2013-06-29T14:45:10.817 回答