[英]How to find out the content of a XML file using Unix Sed/Awk?
我有一个像这样的XML文件(MyXML.xml):
<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns3:GetAllInfoFromRest xmlns:ns2="http://com.lanuk.cfe/b2_7/service/objects" xmlns:ns3="http://com.lanuk.cfe/b2_7/service/operations">
1111,GH43567,Hamburger,GET,278598655,\n000001, ,Kunal,Bhyuo,Ramond,856 K. 98 Rd, , ,Tripura,AGT,INDIA,856987, ,S,S,S,8956,\666666
</ns3:GetAllInfoFromRest>
</S:Body>
</S:Envelope>
现在,我需要从此xml中剥离SOAP内容和所有标签属性,并仅获取字符串响应1111,GH43567,Hamburger,GET,278598655,\\n000001, ,Kunal,Bhyuo,Ramond,856 K. 98 Rd, , ,Tripura,AGT,INDIA,856987, ,S,S,S,8956,\\666666
。
我怎么用awk
或sed
来做?
我以这种方式尝试过:
$ xgawk -lxml 'XMLATTR["xmlns:ns3"]=="http://com.lanuk.cfe/b2_7/service/operations"{print $2}' MyXML.xml
但是很明显,我由于它无法正常工作而犯了一些错误。 有人可以提出其他解决办法吗?
使用awk
awk '{gsub(/<[^>]*>/,"")}NF{$1=$1;print}' file.xml
1111,GH43567,Hamburger,GET,278598655,\n000001, ,Kunal,Bhyuo,Ramond,856 K. 98 Rd, , ,Tripura,AGT,INDIA,856987, ,S,S,S,8956,\666666
gsub
部分替换所有以<
开头并以>
结尾的内容,因此eks <S:Body> is removed.
NF
只是打印出包含数据的行,而删除空白行。 $1=$1
删除了前导和尾随空格。
您可能需要研究xmlstarlet( http://xmlstar.sourceforge.net/ )。 xmlstarlet是命令行xml工具包。 xmlstarlet允许您将xml转换为pyx格式。 pyx本质上是扁平化的xml表示形式,每个标记一行。 然后,您可以使用grep,sed等提取所需的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.