欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-12 16:15:13
...
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