Im新增perl并希望从日志文件中提取信息(名称,DESCR,PID,VID,SN)以供使用。下面是日志文件中的一个条目的示例。如何从perl提取日志文件中的数据
NAME: "data1023", DESCR: "some information"
PID: ABC-0123-xyz , VID: V01 , SN: ABC1234567
我尝试使用分割使用逗号作为分隔符,但它并没有太大的帮助。有人会提出一个更好的方法来解决这个问题吗?
Im新增perl并希望从日志文件中提取信息(名称,DESCR,PID,VID,SN)以供使用。下面是日志文件中的一个条目的示例。如何从perl提取日志文件中的数据
NAME: "data1023", DESCR: "some information"
PID: ABC-0123-xyz , VID: V01 , SN: ABC1234567
我尝试使用分割使用逗号作为分隔符,但它并没有太大的帮助。有人会提出一个更好的方法来解决这个问题吗?
你没有给我们太多的信息,但是基于一些假设,包括但不限于每个条目的2-lins,这里是你可以根据自己的喜好快速建立的解决方案。
#!/usr/local/bin/perl
use strict;
use warnings;
use Data::Dumper;
my $lineno;
my @parts;
my $entryno;
my $line;
my @log;
while (<>) {
$line = $_;
chomp $line;
$lineno++;
if ($lineno % 2) {
#It is line one of the entry
$entryno++;
@parts = split(/,\s*/, $line);
}
else {
push(@parts, split(/,\s*/, $line));
push(@log, [@parts]);
}
}
print Dumper(\@log);
这一切都取决于你想如何对数据进行呈现。所有这一切都将每个条目的每个元素作为一个数组项,然后将每个条目作为数组项,构建一个数组数组。
你能指定输出的格式吗?例如。 SN的样子是什么?它可以以数字开头吗? – Arithmomaniac 2012-07-17 05:58:06
请给出一些额外的信息: 1:这两个单独的行或是包含在一行中的数据? 2:文件中是否存在双引号? – drastogi 2012-07-17 06:01:54
这确实是一些混乱的数据。你是否复制和粘贴,或手动输入?我问,因为在DESCR字段之后没有逗号,在PID之后的逗号之前以及VID之后的逗号之前有空格。这些可能是固定宽度的字段,我想,但它只是看起来有几个可能的错别字。其中一个系统生成的日志为 – DavidO 2012-07-17 06:28:41