如何在特殊字符前的字符串中添加\

时间:2019-08-01 07:26:58

标签: regex sed

我有一个字符串:816788 [20]。

我想在[和]字符前添加\。

所以正确的结果应该是:

816788\[20\]

脚本代码为:

str="816788[20]"
newStr=`echo $str | sed  's/\[/\\\[/' `
echo $newStr

但不幸的是,这是失败的。我尝试过:

  newStr=`echo $str | sed  's/\[/\"\"\[/' `

 newStr=`echo $str | sed  's/\[/\"\["/' `

都错了,谁能帮我?

2 个答案:

答案 0 :(得分:1)

您可以使用

sed 's/[][]/\\&/g'

请参见online demo

str="816788[20]"
newStr=$(sed 's/[][]/\\&/g' <<< "$str")
echo $newStr
# => 816788\[20\]

详细信息

  • [][]匹配[]
  • \\-在替换部分中插入\(如果您使用单个\,它将转义&占位符,并将其视为文字{ {1}}字符)
  • &-整个比赛的占位符
  • &-替换所有出现的内容。

答案 1 :(得分:0)

您的意思是这样的:

sed 's|\[|\\[|;s|\]|\\]|'

示例

echo "816788[20]" | sed 's|\[|\\[|;s|\]|\\]|'

输出

816788\[20\]