gpt4 book ai didi

php - 如何从 Linux 上的日志文件中提取 XML block

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:32:10 24 4
gpt4 key购买 nike

我有一个如下所示的日志文件:

2010-05-12 12:23:45 Some sort of log entry
2010-05-12 01:45:12 Request XML: <RootTag>
<Element>Value</Element>
<Element>Another Value</Element>
</RootTag>
2010-05-12 01:45:32 Response XML: <ResponseRoot>
<Element>Value</Element>
</ResponseRoot>
2010-05-12 01:45:49 Another log entry

我想做的是提取请求和响应 XML(并最终将它们转储到它们自己的单个文件中)。我有一个使用 egrep 的类似解析器,但 XML 全部在一行上,而不是像上面那样多行。

日志文件也有些大,一个日志达到 500-600 兆。较小的日志我会通过 PHP 脚本读取并使用正则表达式匹配,但如此大的文件所需的内存量很可能会终止脚本。

是否有一种简单的方法使用 Linux 机器(在本例中为 CentOS)上的内置工具来提取多行,或者我是否必须硬着头皮使用 Perl 或 PHP 读取整个文件以提取出来?

最佳答案

# Example usage:
# perl script.pl data.xml RootTag > RootTag.xml

use strict;
use warnings;

my $tag = pop;

while (<>){
if ( s/.*(<$tag>)/$1/ .. s/(<(\/)$tag>).*/$1/ ){
print;
last if $2;
}
}

有关 flip-flop operator 的详细信息,请参阅文档.

关于php - 如何从 Linux 上的日志文件中提取 XML block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2831409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com