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