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

杨六 2012-06-18 12:44:49
在使用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 就会报错误

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

在线求助呼
...全文
662 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lylm 2012-06-18
  • 打赏
  • 举报
回复
sed替换可用很多符合作分割符,除了/,其他# , ;什么的都行,这样就不混淆了
qq120848369 2012-06-18
  • 打赏
  • 举报
回复
楼上的方法,或者转义掉.

"\\/"或者'\/'
nicenight 2012-06-18
  • 打赏
  • 举报
回复
示例:
[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
nicenight 2012-06-18
  • 打赏
  • 举报
回复
试试这句:
sed "/pppoe_username/ s#=.*#=$1#g" 

23,118

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧