日期:2014-05-16  浏览次数:20899 次

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替换可用很多符合作分割符,除了/,其他# , ;什么的都行,这样就不混淆了