解析 curl 输出命令行



响应 curl 命令curl -ik -u max:pass -X GET -i -H "Content-Type: application/xml" https://1.2.3.4:943/cloud/rest/projects我得到了一个巨大的 xml,其中包含许多类似于以下内容

的完整内容
<project xlink:href="https://1.2.3.4:943/cloud/projects/13389/" >
<approvedservers xlink:href="https://1.2.3.4:943/cloud/projects/13389/approvedservers/" ></approvedservers>
<requestUser>maxadmin</requestUser>
<removed xlink:href="https://1.2.3.4:943/cloud/projects/13389/removed/" ></removed>
<rejected>false</rejected>
<pending xlink:href="https://1.2.3.4:943/cloud/rest/projects/13389/pending/" ></pending>
<name>4BSm3ZQ1T6q7xBR2xT2PdQ</name>
<servers xlink:href="https://1.2.3.4:943/cloud/rest/projects/13389/servers/" ></servers>
<ticketId>ticketId</ticketId>
<approved>true</approved>
<history xlink:href="https://1.2.3.4:943/cloud/rest/projects/13389/history/" ></history>
<startTime>1502214154651</startTime>
<requestedServerCount>1</requestedServerCount>
<applicationid>4336525</applicationid>
<provision>provision</provision>
<customer>None</customer>
<endTime>253402300740000</endTime>
</project>

我如何解析此输出以获取基于<name>4BSm3ZQ1T6q7xBR2xT2PdQ</name>的所有 urlhttps://1.2.3.4:943/cloud/rest/projects/13389/pending/中相同的项目 ID。基本上我想找到用户名的项目ID。

您可以使用xmlstarlet并搜索所有具有所需文本作为值的name元素,然后将同级元素输出pending(使用../pending/@href:xlink表示"向上一级,然后元素pending,然后属性xlink:href(:

xmlstarlet sel -t  --match '//name[text() = "4BSm3ZQ1T6q7xBR2xT2PdQ"]' -v "../pending/@xlink:href"   file.xml

最新更新