【发布时间】:2013-02-15 21:10:14
【问题描述】:
我怎样才能使用一些 bash/shell 脚本来转换这个输入
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<runJobReturn xmlns="http://xml.org" xmlns:ns1="http://xml.org" xsi:type="ns1:runJobReturn">
<ns1:item xsi:type="ns1:ArrayOf_xsd_string">
<ns1:item xsi:type="xsd:string">15-02-2013</ns1:item>
<ns1:item xsi:type="xsd:string">Benjamin</ns1:item>
<ns1:item xsi:type="xsd:string">MASSY</ns1:item>
</ns1:item>
<ns1:item xsi:type="ns1:ArrayOf_xsd_string">
<ns1:item xsi:type="xsd:string">15-02-2013</ns1:item>
<ns1:item xsi:type="xsd:string">Ronald</ns1:item>
<ns1:item xsi:type="xsd:string">MASSY</ns1:item>
</ns1:item>
<ns1:item xsi:type="ns1:ArrayOf_xsd_string">
<ns1:item xsi:type="xsd:string">15-02-2013</ns1:item>
<ns1:item xsi:type="xsd:string">Zachary</ns1:item>
<ns1:item xsi:type="xsd:string">MASSY</ns1:item>
</ns1:item>
<ns1:item xsi:type="ns1:ArrayOf_xsd_string">
<ns1:item xsi:type="xsd:string">12</ns1:item>
<ns1:item xsi:type="xsd:string">13</ns1:item>
</ns1:item>
<ns1:item xsi:type="ns1:ArrayOf_xsd_string">
<ns1:item xsi:type="xsd:string">12</ns1:item>
<ns1:item xsi:type="xsd:string">13</ns1:item>
</ns1:item>
</runJobReturn>
</soapenv:Body>
到这个输出:
15-02-2013|Benjamin|MASSY
15-02-2013|Ronald|MASSY
15-02-2013|Zachary|MASSY
12|13
12|13
输入来自 curl。我试过使用 sed : 回声 $INP | tr -d "\n" | sed -e 's/]*>/\n/g' 但在输出中仍然在值之间乘以新行
【问题讨论】:
-
不要使用 regex/sed/awk 来处理 xml。还有duplicate