gpt4 book ai didi

linux - 帮助查找和替换字符串的 Shell 脚本

转载 作者:太空宇宙 更新时间:2023-11-04 09:46:12 25 4
gpt4 key购买 nike

我有一个配置文件作为 hive-site.xml

一个配置元素是;

  <property>
<name>hadoop.embedded.local.mode</name>
<value>true</value>
</property>

我想通过 shell 脚本将“true”更改为“false”。但是在文件中有很多配置元素,例如;

   <value>true</value> 

标签。

所以据我所知,我用来查找和替换字符串的“sed”命令很难在这里使用。如果有人可以帮助我,我将不胜感激。

最佳答案

这可能是 XPath 和合理的 XML 库的工作。直接从 shell 脚本执行此操作将创建一个复杂且可能脆弱的解决方案。我要使用 python和流行的lxml图书馆为例:

from lxml import etree

tree = etree.fromstring('''
<property>
<name>hadoop.embedded.local.mode</name>
<value>true</value>
</property>
''')

e = tree.xpath('//property[name="hadoop.embedded.local.mode"]/value')[0]
e.text = 'false'
print etree.tostring(tree)

基本上,如果它包含 <name>,则选择任何属性节点(文档中的任何位置)具有该值的元素,然后它选择值元素。然后您可以根据自己的喜好修改元素的内容并再次打印为字符串。 XPath 是标准的,因此大致相同的代码也应该适用于其他实现。

关于linux - 帮助查找和替换字符串的 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16074543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com