我想在bash脚本中解析下面的xml文本。
<os name="RedHat" os_version="6">
<package_manager type="name">rpm</package_manager>
<multipath_package_check type="command">rpm -qa | grep device-mapper-multipath</multipath_package_check>
<mpath_service_enable type="command">chkconfig multipathd on</mpath_service_enable>
<mpath_service_restart type="command">service multipathd restart</mpath_service_restart>
</os>例如,如果元素属性与参数匹配,我需要下面这样的函数来返回文本。
get_package_manager "RedHat" "6" 应返回"rpm“
get_multipath_package_check "RedHat" "6" 应返回"rpm -qa | grep device-mapper-multipath“
感谢任何人的帮助。
发布于 2016-05-22 21:00:45
使用xml2 (apt-get install xml2)程序,对于XML的平面表示,更容易进行一些"xml解析“。
通常:
$ xml2 < test.xml | grep package_manager= | cut -d= -f2
rpm
$ xml2 < test.xml | grep multipath_package_check= | cut -d= -f2
rpm -qa | grep device-mapper-multipath但这解决不了任何问题。对于使用xml2无法轻松解决的问题,您可以尝试使用xpath来表达查询,并使用任何可用的xpath工具,如xmllint:
$ xmllint --xpath '/os[@name="RedHat" and @os_version="6"]/package_manager/text()' test.xml
rpm
$ xmllint --xpath '/os[@name="RedHat" and @os_version="6"]/multipath_package_check[@type="command"]/text()' test.xml
rpm -qa | grep device-mapper-multipathhttps://stackoverflow.com/questions/37336095
复制相似问题