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

时间:2013-06-29 10:36:19

标签: linux bash sed

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

但是

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

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

3 个答案:

答案 0 :(得分:24)

/是要用s的{​​{1}}(替换)命令替换的正则表达式的一部分时,可以在命令中使用其他字符而不是斜杠语法,所以你写,例如:

sed
使用<{1>}以上sed 's,/,\\\\,g' 代替通常的斜杠来分隔,命令的两个参数:描述要替换的部分的正则表达式和用作替换的字符串。

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

s

答案 1 :(得分:18)

这个怎么样?

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

在shell中演示:

$ var=a/b/c
$ a=${var//\//\\\\}
$ echo "$a"
a\\b\\c

答案 2 :(得分:0)

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

$ var=a/b/c
$ echo "$var"
a/b/c
$ tr '/' '\' <<< "$var"
a\b\c
相关问题