使用sed替换一些特殊字符时,需要进行转义,但是如果想替换 方括号 [],就可能需要一些特殊的技巧。
1、替换[ 或者 ]
echo '[test' |sed 's/\[//'
echo 'test]' |sed 's/\]//'
echo 'test]' |sed 's/]//'
对比可以发现, 替换 [ 时必须转义,而替换 ] 时可以不转义
2、 同时替换 []
echo '[test]' |sed 's/[\[\]]/' # 无法替换
echo '[test]' |sed 's/[\[]]/' # 无法替换
当需要同时发现以上两种方法都无法完成替换
方法一:
使用两次 sed
echo '[test]' |sed 's/\[//' |sed 's/]//'
方法二:
echo '[test]' |sed 's/[][]//'
具体原理有空再来补充