我的日志文件结构如下:
Start Sollumsatz-Verrechnung 05.12.2018 03:42:51 Verwende 20 Threads. Anzahl gesamt : 162360 Anzahl erfolgreich: 162360 Anzahl fehlerhaft : 0 Ende Sollumsatz-Verrechnung 05.12.2018 04:03:03
我想将某些信息保存在哈希(%hash_ref)中。在“标志部分”中,我的代码跳至“ Verwende 20线程”行。但应跳至“ Anzahl erfolgreich”。你知道怎么做吗?
任何帮助将不胜感激。
my %hash_ref;
my %filter;
my ($act, $time,$flag);
while(my $line = <FILE>) {
if ($line =~ /(.+? Sollumsatz-Verrechnung)\s+(\d\d.\d\d.\d\d\d\d \d\d:\d\d:\d\d)/) {
($act,$time) = ($1,$2);
$flag = 1;
}
elsif ($line =~ /(.+? Deaktiviere PKonten)\s+(\d\d.\d\d.\d\d\d\d \d\d:\d\d:\d\d)/) {
($act,$time) = ($1,$2);
$flag = 1;
}
elsif ($line =~ /(.+? PSK historisieren)\s+(\d\d.\d\d.\d\d\d\d \d\d:\d\d:\d\d)/) {
($act,$time) = ($1,$2);
$flag = 1;
}
else {
if ($flag) {
print $line,"\n" # this outputs 'Verwende 20 Threads'
if ($line =~ /Anzahl erfolgreich:\s+(.+?)\s*$/) {
#print $line, "\n";
push @{ $hash_ref{$act}{'Anzahl'} }, $1;
}
}
$flag = 0;
}
if (! defined($filter{$act}{$time})) {
push @{ $hash_ref{$act}{'time'} }, $time;
$filter{$act}{$time} = 1;
}
}
答案 0 :(得分:0)
我实际上是通过以下方式解决了这个问题:
else {
next if $line !~ /Anzahl erfolgreich/;
if ($flag) {