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服务器获取自己想要的配置然后修改

  自动化脚本 .

posted @ 2020-06-11 17:55  挪威森林猫Zzz  阅读(4185)  评论(0编辑  收藏  举报