sed 中的斜杠和反斜杠

sed 中的斜杠和反斜杠

我想用来sed将斜杠更改为反斜杠和斜杠,即/-> \/。但这不起作用。这是一个小例子:

#!/bin/bash
TEST=/etc/hallo
echo $TEST
echo $TEST | sed "s/hallo/bello/g"
echo $TEST | sed "s/\//\\\//g"

前三行的输出如假设的那样。但最后一个不起作用。为什么?最后一部分如何修改?

答案1

对您使用的表达式使用单引号:

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

在双引号中,\有特殊含义,所以你必须反斜杠它:

sed "s/\//\\\\\//g"

但更改分隔符会更干净:

sed 's=/=\\/=g'
sed "s=/=\\\/=g"

答案2

尝试:

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

或使用另一个分隔符来防止转义斜杠:

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

相关内容