阅读背景:

sed 脚本求助:变量中含有转义字符处理

来源:互联网 
在使用sed脚本替换的时候,碰到一个问题:
如cat /opt/sysinfo.ini | sed "/pppoe_username/ s/=.*/=
在使用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  就会报错误

关于这个问题,是否比较好的方法规避?

在线求助呼

4 个解决方案

#1


试试这句:
sed "/pppoe_username/ s#=.*#=$1#g" 

#2


示例:
[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

#3


楼上的方法,或者转义掉.

"\\/"或者'\/'

#4


sed替换可用很多符合作分割符,除了/,其他# , ;什么的都行,这样就不混淆了

/g" > /tmp/static_temp 如cat /opt/sysinfo.ini&n



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: