我有一个字符串:816788 [20]。
我想在[和]字符前添加\。
所以正确的结果应该是:
816788\[20\]
脚本代码为:
str="816788[20]"
newStr=`echo $str | sed 's/\[/\\\[/' `
echo $newStr
但不幸的是,这是失败的。我尝试过:
newStr=`echo $str | sed 's/\[/\"\"\[/' `
和
newStr=`echo $str | sed 's/\[/\"\["/' `
都错了,谁能帮我?
答案 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\]