sed替换单引号为反斜杠

4

This:

echo "Hel'lo" | sed s/\'/\\\'/g

收益率
Hel'lo

What I want is this:

Hel\'lo

我漏掉了什么?
4个回答

14
echo "Hel'lo" | sed "s/'/\\\'/g"
Hel\'lo

另外

echo "Hel'lo" |  sed s/\'/\\\\\'/g

1
实际上,你的第一个示例有一个不必要的额外反斜杠。在替换字符串中,由于 ' 没有被视为特殊字符,因此您不需要对其进行转义。sed "s/'/\\'/g" - ghoti

1

或者不使用引用sed参数:

echo "Hel'lo" | sed s/\'/\\\\\'/g

1

你也可以使用所有单引号来完成它:

echo "Hel'lo" | sed 's/'\''/\\'\''/g'

既然你的问题也标记了bash,我也可以指出你甚至不需要使用sed:

[ghoti@pc ~]$ foo="Hel'lo"
[ghoti@pc ~]$ echo "${foo/\'/\'}"
Hel\'lo

0

这个可能适合你:

echo "Hel'lo" | sed 's/'\''/\\&/'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接