如何使用sed命令查找并替换文件中的路径?和在sed中引入shell变量的四种方法

原文链接 https://blog.csdn.net/weiyuefei/article/details/62216107

今天在写一个脚本遇到问题,----需要在sed中引入shell变量,在网上搜了变天才找到,经过测试

这四种方法都可用,在这里跟大家分享下,=---同时谢谢netman大哥,前辈就是前辈哈哈

1.eval sed ’s/$a/$b/’ filename
2.sed "s/$a/$b/" filename
3.sed ’s/’$a’/’$b’/’ filename 
4.sed s/$a/$b/ filename

 

以上内容为引用;  以下部分为个人总结:

问题:如何使用sed命令 查找并替换文件中的路径(目录),替换成某个变量的值?

变量:name="/usr/local"

比如,文件test.txt中, 有一行“nginx=/usr/local/nginx”  那么如何把这一行的内容替换成nginx=$name后,即:nginx=/usr/local

难点一:如何把变量传递给sed?

难点二:如何避免因变量在bash解释器中展开后,出现的“/”和sed替换命令中的“/”冲突问题?

解决方法思路:

针对难点一:通过使用双引号的解决变量展开的问题:sed “s/regexp/replacement/g" filename

针对难点二:通过使用查找替换的特殊字符来避免变量中“/”和sed替换中“/”冲突   sed “s#regexp#replacement#g" filename

所以,可以通过以下命令解决以上难题:

        sed -ri “s#(^nginx=).*$#\1${name}#g"  /path/to/file

 

 

 

 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值