[英]Parsing curl output command line
响应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>
解析此输出以获取所有URL https://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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.