【发布时间】:2018-10-05 15:52:12
【问题描述】:
我有很大的日志文件(每个大约 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”且状态属性设置为“已激活”的 XML
通过使用“sed”,我能够提取所有信封,目前我正在使用正则表达式检查其中是否存在上述条件(通过在循环中运行所有这些条件)。
sed -n '/<envelope>/,/<\/envelope>/p' logfile
从文件中提取我需要的内容的正确解决方案是什么?
谢谢!
【问题讨论】:
-
生成该 XML 的人显然不知道如何最好地使用 XML。
-
您应该使用 XML 解析器来解析 XML 数据。此日志文件中还有什么?显示更多。
-
@glennjackman 大部分不是 XML,而是各种 java 日志(调试/信息/错误)。
-
有人将属性重新发明为标签,但仍需要名称/值属性?
-
我们可以专注于手头的问题吗?我没有生成那些 XML,所以我无法回答其结构的质量
标签: regex linux awk sed xmlstarlet