【Linux】使用sed、awk来完成批量修改配置文件的shell设计
来源:互联网 发布:linux下怎么编程 编辑:程序博客网 时间:2024/05/22 12:53
背景:现在有个三个文件,以后可能会更多,就以这三个文件为例子。三个配置文件在服务器ip变动的时候(自己的虚拟机),都需要手动去修改ip地址。
想法:那就用shell脚本来完成自动化批量修改
设计:
1.拿到服务当前IP(注意:使用的esc下的那个引号来保证命令正常执行,还可以使用$())
ip=`ifconfig eth0 | sed -n '/inet addr/p' | awk '{print $2}' | awk -F: '{print $2}'`sed来匹配指定内容的行
2.切换工作目录
3.对目录下的三个文件进行操作,使用数组来存储(注意:字符串之间有空格间隔)
filelist=("redis6380.conf" "redis6381.conf" "redis6382.conf")
4.对数组进行for循环处理(注意:这个for括号中的语法)
for f in "${filelist[@]}";dodone
5.查询到需要修改的内容并进行替换(具体的就不解释了,可以Google一下或看官网)
$(awk -v tmps="$ip" '$1~/slaveof/{$2=tmps}1' $f 1<>$f)
awk 使用了-v来设置变量tmps
最后整合一下,shell脚本如下:
#!/bin/bashecho '>>>Get server ipaddress :'ip=`ifconfig eth0 | sed -n '/inet addr/p' | awk '{print $2}' | awk -F: '{print $2}'`echo $ipworkspace='/etc/'cd $workspaceecho '>>>current work path :' `pwd`filelist=("re6380.conf" "re6381.conf" "re6382.conf")for f in "${filelist[@]}";do echo ">>>current check file is :" $f # cat redis6380.conf | grep '^slaveof' | awk '{print $2}' # cat redis6380.conf | awk '/^slaveof/{print $2}' oldip=$(cat $f | sed -n '/^slaveof/p' | awk '{print $2}') #$(awk -v tmps="$ip" '$1~/slaveof/{$2=tmps}1' $f 1<>$f) newip=$(cat $f | sed -n '/^slaveof/p' | awk '{print $2}') echo $oldip '-->' $newipdoneecho 'successed.'
阅读全文
0 0
- 【Linux】使用sed、awk来完成批量修改配置文件的shell设计
- Linux shell sed awk
- linux shell awk sed
- linux shell sed && awk 的学习
- Linux RedHat 下批量修改文件名--使用的是awk
- linux shell必知必会sed、awk
- 使用 sed 修改配置文件
- Linux shell编程之awk与sed使用详解
- linux shell awk sed 截取需要的内容
- Shell中awk和sed的一些使用
- linux shell编程awk、sed调用方法
- linux之shell之grep,awk,sed
- Linux Shell编程二:sed&awk
- Linux Shell脚本(正则/Sed/AWK)
- shell脚本采用sed批量修改文件
- sed和awk中使用shell变量
- sed和awk中使用shell变量
- sed和awk中使用shell变量
- python的基础语法(if,while,for,break,continue 特殊缩进)
- Static--方法与变量
- 【笔记】敏捷开发
- linux 路由表设置 之 route 指令详解
- Condensed RSA
- 【Linux】使用sed、awk来完成批量修改配置文件的shell设计
- HDU
- Java发展史
- 百度地图学习总结(3)—定位
- HBuilder连接夜神模拟器测试
- 10.26
- 详解YUV420数据格式
- Centos7安装mysql5.7,解决没有默认的配置文件
- sublime text3 lua环境配置