sed替换路径等参数时遇到的问题
问题描述
写脚本需要替换json串中的路径 脚本如下:
1 | bash复制代码path=/root/baixw/test |
脚本需要替换文本中的带有路径的字符串,结果脚本执行出现错误:
1 | vbnet复制代码sed: -e expression #1, char 26: unknown option to 's' |
使用bash -x调试脚本发现sed命令所在行被解析为:
sed -i "s/path=.*/path=/root/baixw/test' ./sed_path.txt
很明显了,String中有特殊字符,需要用``转义,故最后转义的结果真滴是眼睛都花了,还是不好处理啊
解决办法
经过百度,得到如下解决办法:
1 | bash复制代码path=/root/baixw/test |
sed命令中有如下设计:当用户不方便转义字符串中的特殊字符(如/)时,sed支持使用自定义分隔符,让用户避开冲突
即可以定义不会冲突的字符即可,如上,我所替换的即为?
作为分隔符,也是可以很完美的即决问题的
本文转载自: 掘金