【发布时间】:2019-03-22 22:38:30
【问题描述】:
我正在寻找一种命令行方式(在 SunOS 上)从日志文件中提取包含特定字符串的 xml 消息。
例如,日志文件可能包含以下形式的 xml 消息:
<message>
<body>
<tags> uniqueId="123456" </tags>
</body>
</message>
与其他带时间戳的日志行一起。可能有多个包含相同 ID 的 xml 消息,因为同一记录可能已运行多次。
要提取当前的 xml,我有这个 awk 命令:
nawk '$0~s{for(c=NR-b;c<=NR+a;c++)r[c]=1}{q[NR]=$0}END{for(c=1;c<=NR;c++)if(r[c])print q[c]}' b=4 a=15 s="someUniqueId" file
我遇到的问题是这会拉出特定数量的行。但是,xmls 的长度可能会有所不同,我正在努力寻找一种方法来修改它,以便它找到唯一的 ID 并将所有行拉到"<message>",并将所有行拉到"</message>"
【问题讨论】:
-
nawk旧且缺乏功能。/usr/xpg4/bin/awk在功能上更接近 POSIX,因此在 Solaris 上使用 awk 是更好的选择。