sed中使用变量,普通的处理方式无法解析变量

如当前file文件中存在字符串pedis,现将其替换为redis

[root@localhost work]# cat file
pedis

如下两种替换方式,都是行不通的

#!/bin/bash

old_str=pedis
new_str=redis sed -i 's/$old_str/$new_str/g' file
sed -i 's#$old_str#$new_str#g' file

将变量用三个单引号引起来,可以解决上述问题

#!/bin/bash

old_str=pedis
new_str=redis #sed -i 's/$old_str/$new_str/g' file #sed -i 's#$old_str#$new_str#g' file sed -i 's/'''$old_str'''/'''$new_str'''/g' file

执行结果

[root@localhost work]# cat file
pedis
[root@localhost work]# ./replace.sh
[root@localhost work]# cat file
redis

当变量中存在特殊字符/,上面的替换方式就不合适了,需要将/改为#

#!/bin/bash

old_str=redis
new_str=/data/ sed -i 's#'''$old_str'''#'''$new_str'''#g' file

执行结果

[root@localhost work]# cat file
redis
[root@localhost work]# ./replace.sh
[root@localhost work]# cat file
/data/

最新文章

  1. try catch 与 throw拾遗
  2. Android 系统稳定性 - ANR(二)(转)
  3. 树莓派make 360wifi2报错
  4. java基础知识回顾之java Thread类学习(七)--java多线程安全问题(死锁)
  5. 20160510--hibernate懒加载问题
  6. cocos2d-x编译错误问题
  7. Codeforces 301_div.2_Ice Cave(BFS走冰块)
  8. Android入门之时间日期控件
  9. C++拾遗(十一)类继承
  10. 浅谈spring——spring MVC(十一)
  11. 4.事务提交过程,交易的基本概念,Oracle交易周期,保存点savepoint,数据库的隔离级别
  12. Java运算符和流程控制
  13. htmlcss渐变及兼容性
  14. 【算法】深度优先 马走日 Hamilton routes
  15. C#窗体-猜数字
  16. go 函数类型
  17. 【Linux常用工具】
  18. protobuf可变长编码的实现原理
  19. 上云、微服务化和DevOps,少走弯路的办法
  20. centos7 PDI(Kettle)安装

热门文章

  1. bootstrap下拉框保持打开
  2. D. Lakes in Berland (DFS或者BFS +连通块
  3. mongodb 启动数据库失败原因及解决办法
  4. python_模块2
  5. GDI+ 实例:绘制验证码
  6. EMF中复制对象属性
  7. Java8-Optional-No.02
  8. python自动华 (四)
  9. java正则表达式——总结
  10. JQuery-UI组件化开发