【Linux】使用sed、awk来完成批量修改配置文件的shell设计
2017-10-26 00:39
2166 查看
背景:现在有个三个文件,以后可能会更多,就以这三个文件为例子。三个配置文件在服务器ip变动的时候(自己的虚拟机),都需要手动去修改ip地址。
想法:那就用shell脚本来完成自动化批量修改
设计:
1.拿到服务当前IP(注意:使用的esc下的那个引号来保证命令正常执行,还可以使用$())
2.切换工作目录
3.对目录下的三个文件进行操作,使用数组来存储(注意:字符串之间有空格间隔)
4.对数组进行for循环处理(注意:这个for括号中的语法)
for f in "${filelist[@]}";do
done
5.查询到需要修改的内容并进行替换(具体的就不解释了,可以Google一下或看官网)
awk 使用了-v来设置变量tmps
最后整合一下,shell脚本如下:
想法:那就用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[@]}";do
done
5.查询到需要修改的内容并进行替换(具体的就不解释了,可以Google一下或看官网)
$(awk -v tmps="$ip" '$1~/slaveof/{$2=tmps}1' $f 1<>$f)
awk 使用了-v来设置变量tmps
最后整合一下,shell脚本如下:
#!/bin/bash echo '>>>Get server ipaddress :' ip=`ifconfig eth0 | sed -n '/inet addr/p' | awk '{print $2}' | awk -F: '{print $2}'` echo $ip workspace='/etc/' cd $workspace echo '>>>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 '-->' $newip done echo 'successed.'
相关文章推荐
- Linux中使用sed命令或awk命令修改常规配置文件
- SHELL syntax error:unexpected end of file 提示错误; windows下修改linux文件导致linux文件无法使用
- 使用 sed 修改配置文件
- 使用sed修改配置文件中配置项的值
- Linux下修改配置文件直接使用root权限登录
- Linux下使用touch批量修改文件夹和文件的时间
- shell脚本批量监控Linux server配置文件的更改
- linux使用fondconfig配置文件修改默认字体(gnome3)
- Linux--对目录下的配置文件批量修改IP
- 详解linux下批量替换文件内容的三种方法(perl,sed,shell)
- linux 批量修改配置文件的数据地址
- sed指令修改arm-Linux系统的开发板网络配置文件 eth0-setting。
- shell脚本批量监控Linux server配置文件的更改
- 使用终端shell命令批量修改一个文件下的所有文件的读写权限
- linux(以ubuntu为例)下Android利用ant自动编译、修改配置文件、批量多渠道,打包生
- linux 批量删除及修改文件shell命令
- linux命令之----sed命令用于处理文本文件如修改配置文件
- linux(以ubuntu为例)下Android利用ant自动编译、修改配置文件、批量多渠道,打包生成apk文件
- linux(以ubuntu为例)下Android利用ant自动编译、修改配置文件、批量多渠道,打包生成apk文件
- linux下根据用户输入批量修改配置文件ip