sed 脚本求助:变量中含有转义字符处理
在使用sed脚本替换的时候,碰到一个问题:
如cat /opt/sysinfo.ini | sed "/pppoe_username/ s/=.*/=$1/g" > /tmp/static_temp
是想将文件中的pppoe_username=.* 替换成pppoe_username=$1 ,$1是替换的值
若此时$1中含有/符号时,如admi/n 时,此时命令的格式就会变成
sed "/pppoe_username/ s/=.*/=admi/n/g 就会报错误
关于这个问题,是否比较好的方法规避?
在线求助呼
[解决办法]
示例:
- C# code
[nicenight@CSDN ~]$ a="ab/c"[nicenight@CSDN ~]$ echo "pppoe_username=aaa" | sed "/pppoe_username/ s/=.*/=$a/g"sed: -e expression #1, char 28: unknown option to `s'[nicenight@CSDN ~]$ echo "pppoe_username=aaa" | sed "/pppoe_username/ s#=.*#=$a#g"pppoe_username=ab/c
[解决办法]
楼上的方法,或者转义掉.
"\\/"或者'\/'
[解决办法]
sed替换可用很多符合作分割符,除了/,其他# , ;什么的都行,这样就不混淆了