日志快速解析器

小包

需要解析一些以空格(" ")作为分隔符的日志,并观察双引号或单引号。

例如

id=firewall time="2010-05-09 16:07:21 UTC" 1.1.1.1 ...

应该解析为

id=firewall
time="2010-05-09 16:07:21 UTC"
1.1.1.1

日志是

  • 很长,
  • 不一定是键=值格式
  • 不一定是csv格式:

尝试使用Text :: CSV_XS,因为它比基于纯Perl的解析器要快得多。但是,下面的代码不能满足我的期望,因为日志不是有效的csv字符串。

use Text::CSV_XS;

$a = 'id=firewall time="2010-05-09 16:07:21 UTC"';

$userDefinedSeparator = Text::CSV_XS->new({sep_char => " "});
print "$userDefinedSeparator\n";
$userDefinedSeparator->parse($a);
my $e;
foreach $e ($userDefinedSeparator->fields) {
    print $e, "\n";
}

是否有可以解析上述日志的快速解析器?最好将Text :: CSV_XS配置为进行所需的解析。

感谢@ThisSuitIsBlackNot,他建议重写此问题。

鲍罗丁

我在回答对上一个问题的解决方案的评论回答了这个问题

这是我之前给出的答案,以及您在此问题中显示的新数据。

我对上一个问题的问题是,您仅显示了key=value配对,因此,我假设这就是您数据中的全部内容。

希望这对您有用。

use strict;
use warnings;

my $string = 'id=firewall time="2010-05-09 16:07:21 UTC" 1.1.1.1 ...';

my @fields = $string =~ / (?: "[^"]*" | \S )+ /xg;

print "$_\n" for @fields;

输出

id=firewall
time="2010-05-09 16:07:21 UTC"
1.1.1.1
...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python日志解析器

来自分类Dev

日志解析器 - 扩展

来自分类Dev

请求日志解析器 - 文本解析

来自分类Dev

用于Matlab的快速JSON解析器

来自分类Dev

perl快速json解析器程序

来自分类Dev

詹金斯日志解析器

来自分类Dev

日志解析器 PHP - 在日志被另一个进程修改时解析日志

来自分类Dev

Jenkins:日志解析器插件错误:无法解析日志:无法读取解析规则文件

来自分类Dev

是否有用于日期的快速解析器

来自分类Dev

如何快速使用GDataXML或类似DOM解析器?

来自分类Dev

日志解析器查询包含空格的参数值

来自分类Dev

在日志解析器结果中添加额外的列

来自分类Dev

日志解析器查询包含空格的参数值

来自分类Dev

如何加快此日志解析器的速度?

来自分类Dev

快速解析日志

来自分类Dev

算术解析器

来自分类Dev

对话解析器

来自分类Dev

OsmInEdit的解析器

来自分类Dev

对话解析器

来自分类Dev

WikiRank 解析器

来自分类Dev

我应该何时在快速会话中使用cookie解析器?

来自分类Dev

Windows 2008上的Java日志文件解析器无法使用File.lastModified

来自分类Dev

日志解析器:在WHERE子句中使用文本文件作为输入

来自分类Dev

Java 或 Scala 中的 Log4j 非结构化日志解析器

来自分类Dev

如何在“脚本化”Jenkins 管道中使用日志解析器插件?

来自分类Dev

如何使argparse解析器也充当子解析器

来自分类Dev

Android SimpleXml解析器数据解析器错误

来自分类Dev

Python LDIF解析器

来自分类Dev

Python Json解析器