shell脚本新增或修改hadoop的xml配置文件

shell自动化部署组件的时候对文件字符串处理配置文件的需求比较大,部署hadoop处理如下格式xml的量是非常多的:
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>


以下是新增或者修改yarn.resourcemanager.ha.rm-ids节点的值
#!/bin/bash
filename="/hadoop-2.7.1/etc/hadoop/yarn-site.xml"
key="yarn.resourcemanager.ha.rm-ids"
value="rm1,rm2"
key=${key//\//\\/}
key=${key//\./\\.}
key=${key//\:/\\:}
value=${value//\:/\\:}
value=${value//\//\\/}
value=${value//\./\\.}
regex="<name>\s*${key}\s*<\/name>"
#echo "$regex"
grep -q "$regex" $filename&&isExist="yes"||isExist="no"
if [ $isExist = "yes" ];then
regex2="(${regex}\n*\s*<value>).*?(<\/value>)"
sed -i -r '/'"${regex}"'/{N;s/'"${regex2}"'/\1'"${value}"'\2/g}' $filename
#sed -i -r '/'"${regex}"'/{N;s/'"${regex2}"'/'"${value}"'/g}' $filename
fi
if [ $isExist = "no" ];then
sed -i 's/^<\/configuration>/<property>\n<name>'"${key}"'<\/name>\n<value>'"${value}"'<\/value>\n<\/property>\n&/' $filename
fi

猜你喜欢

转载自lyongq04.iteye.com/blog/2297619