如何使用Unix Sed/Awk查找XML文件的内容?

如何使用Unix Sed/Awk查找XML文件的内容?,unix,xml-parsing,sed,awk,Unix,Xml Parsing,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"

我有一个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>
但很明显,我犯了一些错误,因为它不起作用。 有人能提出其他解决方法吗?

使用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
awk'{gsub(/]*>/,“”)}NF{$1=$1;print}file.xml
印度阿格特特里普拉98路856号,拉蒙德比尤库纳尔,GH43567,汉堡包,GET,278598655,n000001,邮编:856987,S,S,S,8956,666666
gsub
部分替换所有以
开头并以code>结尾的内容,因此删除eks
NF
只需打印出包含数据的行,删除空行即可<代码>$1=$1删除了前导空格和尾随空格。

使用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
awk'{gsub(/]*>/,“”)}NF{$1=$1;print}file.xml
印度阿格特特里普拉98路856号,拉蒙德比尤库纳尔,GH43567,汉堡包,GET,278598655,n000001,邮编:856987,S,S,S,8956,666666

gsub
部分替换所有以
开头并以code>结尾的内容,因此删除eks
NF
只需打印出包含数据的行,删除空行即可
$1=$1
删除了前导空格和尾随空格。

您可能需要查看xmlstarlet()。 xmlstarlet是一个命令行xml工具包。xmlstarlet允许您转换 将xml转换为pyx格式。 pyx本质上是一种扁平化的xml表示,每个标记一行。
然后,您可以使用grep、sed等来提取所需内容。

您可能需要查看xmlstarlet()。 xmlstarlet是一个命令行xml工具包。xmlstarlet允许您转换 将xml转换为pyx格式。 pyx本质上是一种扁平化的xml表示,每个标记一行。
然后您可以使用grep、sed等提取您想要的内容。

请您对上述答案进行解释。这将有助于我理解正在发生的事情。谢谢你的解释。但是,我有一个疑问,如果
中的所有内容都被删除了,它是否也会删除我们试图从xml中获取的字符串?不,正常的标记都标有start
和stop code>,就像这样
。在xml中,数据不应在
之内,并且数据不应包含
。请您对上述答案进行解释。这将有助于我理解正在发生的事情。谢谢你的解释。但是,我有一个疑问,如果
中的所有内容都被删除了,它是否也会删除我们试图从xml中获取的字符串?不,正常的标记都标有start
和stop code>,就像这样
。在xml中,数据不应在
内,并且数据不应包含