gpt4 book ai didi

bash - 如何使用xmllint和xpath输出多行

转载 作者:行者123 更新时间:2023-12-03 16:11:36 27 4
gpt4 key购买 nike

我正在编写一个简单的 bash 脚本来解析一些 xml。我使用的是 sed 和 awk,但我认为 xmllint 更适合。

不幸的是,我对 xpath 完全陌生,所以我真的很挣扎。

我正在尝试采用以下 xml:

<?xml version="1.0" encoding="UTF-8"?>
<releaseNote>
<name>APPLICATION_ercc2</name>
<change>
<date hour="11" day="10" second="21" year="2013" month="0" minute="47"/>
<submitter>Automatically Generated</submitter>
<description>ReleaseNote Created</description>
</change>
<change>
<version>2</version>
<date hour="11" day="10" second="25" year="2013" month="1" minute="47"/>
<submitter>fred.bloggs</submitter>
<description> first version</description>
<install/>
</change>
<change>
<version>3</version>
<date hour="12" day="10" second="34" year="2013" month="1" minute="2"/>
<submitter>fred.bloggs</submitter>
<description> tweaks</description>
<install/>
</change>
<change>
<version>4</version>
<date hour="15" day="10" second="52" year="2013" month="1" minute="38"/>
<submitter>fred.bloggs</submitter>
<description> fixed missing image, dummy user, etc</description>
<install/>
</change>
<change>
<version>5</version>
<date hour="17" day="10" second="31" year="2013" month="1" minute="40"/>
<submitter>fred.bloggs</submitter>
<description> fixed auth filter and added multi opco stuff</description>
<install/>
</change>

.....

并处理它以将 '3' 作为变量传递给 xpath 脚本,并输出如下内容:
4    fred.bloggs    10/1/2013 15:38     fixed missing image, dummy user, etc
5 fred.bloggs 10/1/2013 17:40 fixed auth filter and added multi opco stuff

换句话说,每个节点的内容的复杂组合,其中 version 的值大于,例如,3。

最佳答案

您可能会发现对此类事情有用的一个工具是 xmlstarlet ,尽管使用 xpath 工具可能不那么特殊。

xmlstarlet ,以下有效(我在您的示例中为 releaseNote 添加了一个关闭标记):

$ summary() {
xmlstarlet sel -t -m "//change[version > $2]" \
-v submitter -o $'\t' \
-v date/@day -o '/' -v date/@month -o '/' -v date/@year -o ' ' \
-v date/@hour -o ':' -v date/@minute -o $'\t' \
-v description -n $1
}
$ summary test.xml 3
fred.bloggs 10/1/2013 15:38 fixed missing image, dummy user, etc
fred.bloggs 10/1/2013 17:40 fixed auth filter and added multi opco stuff

$

关于bash - 如何使用xmllint和xpath输出多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17092862/

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