Linux shell修改xml文件
1. xml文件一般都是key-value形式 , 那么我们需要先定位到key ,再取下一行进行整体替换
#!/bin/bash #需要修改的value的 key a=ha.zookeeper.quorum #需要修改成的值 b="node1:2181;node2:2181;node3:2345" #文件路径 file=/home/abby/core-site.xml sed -i "/>$a</{n;s#.*# <value>$b</value>#}" $file
a= 这个是放key
b= 这个是放value ,我这里加引号是为了防止需要转义字符
file= 这个是文件路径
我的源文件是这样
<property> <name>fs.defaultFS</name> <value>hdfs://cluster</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/abby/hdfs/tmp</value> </property> <property> <name>ha.zookeeper.quorum</name> <value>node1:2181;node2:2181;node3:2181</value> </property>
PS: 有时候我们安装zookeeper的时候 , myid 是根据机器不同也有区别
这时候利用redis 的任何地方访问
a=`redis-cli -h 192.168.1.X -p 6379 get ip_zk_myid `
然后放入进去 ,这是一种任何机器获取全局共享变量的一种实现
可以根据自己的IP , 去redis服务器获取自己想要的配置然后修改
自动化脚本 .