繁体   English   中英

从日志文件中提取特定的XML

[英]Extract specific XMLs from log file

我有很大的日志文件(每个文件约50mb),其中包含Java调试信息以及各种XML响应

这是我尝试从日志中提取内容的示例

<envelope>
    <response>
        <ATTR name="uniqueid" value="XYZ_00000-00-00_12345_1"/>
        <ATTR name="status" value="Activated"/>
        <ATTR name="datecreated" value="2018/10/04 09:39:05"/>
    </response>
</envelope>

我只需要其uniqueid属性包含 “ 12345”且status属性设置为“ Activated”的XML。

通过使用“ sed”,我能够提取所有信封,并且当前我正在使用正则表达式检查其中是否存在上述条件(通过循环运行所有这些条件)。

sed -n '/<envelope>/,/<\/envelope>/p' logfile

从文件中提取我需要的什么是正确的解决方案?

谢谢!

假设您的xml格式如下所示,这应该可以...

$ awk '/<envelope>/ {line=$0; p=0; next} 
             line   {line=line ORS $0} 
    /uniqueid/ && $3~/12345/ {p=1}
   /<\/envelope>/ && p {print line}' file

使用开始标签,如果发现所需的行设置了标志,则开始累积行;如果设置了标志,则结束标记,开始记录。

gawk可以代替

$ awk -F'\n' -v RS='</envelope>\n'    \
    '$3~/uniqueid.*12345/ && $4~/status.*Activated/{print $0, RT}' file

会有额外的换行符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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