繁体   English   中英

解析curl输出命令行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM