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服務器獲取自己想要的配置然后修改
自動化腳本 .