perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 29
Click for quality!




10.02.2012 / 08:54

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragLogfile durchsuchen...
Seitenanfang
Ich muss Logfiles nach bestimmten Fehlern durchsuchen und von der gefundenen Zeile aus $prev Zeilen zuvor und $next zeilen danach ausgeben.

Wie bekomme ich das hin, weil wenn ich an der gesuchten Stelle bin, müsste ich ja $prev Zeilen zurück springen und dann bis $next alles ausgeben.

Hat jemand eine Idee?


#!/usr/bin/perl

my $file=$ARGV[0];

my $regexp="Error";
my $num=0;
my $prev=5;
my $next=5;

open(DAT, "< $file") || die("Kann Datei -".$file."- nicht laden!");
while (my $line=<DAT>) {

my $vor="";
my $nach="";

if ($line =~ m/$regexp/) {

$vor=($num-$prev);
$nach=($num+$next);

$count{$regexp}++;
$all+=$count{$regexp};

print "\n\033[1;32m".$regexp."\033[m ";

print "\033[1;31m".$vor."\033[m ";
print "\033[1;33m".$nach."\033[m\n";

for (my $i=$vor; $i<$nach; $i++){
print $num.")\t".$line[$i];
}

$num++;

}
}
close(DAT);

Datum: 23.12.2004-15:24

Beitragre: Logfile durchsuchen...
Seitenanfang
Frage: Wie werden Doppeltreffer gehandhabt? Wird innerhalb der $next Zeilen auch noch geprueft und die Ausgabe verlaengert sich bei wiederholtem Treffer, werden 2 Ergebnisse fuer die jeweiligen Treffer ausgegeben oder wird das ignoriert?

Datum: 23.12.2004-16:29

Beitragre: Logfile durchsuchen...
Seitenanfang
Also bei einer Übeschneidung der Suchergebnisse werden beide ausgegeben.

Schau Dir mal das an, es scheint zu gehen, oder..?


open(DAT, "< $file") || die("Kann Datei -".$file."- nicht laden!");
while (<DAT>) {

my $vor="";
my $nach="";

if ($_ =~ m/$regexp/) {
$vor=($num-$prev);
$nach=($num+$next);
}

for (my $i=$vor; $i<=$nach; $i++) {
print "$num - $i - ".$_;
}

$num++;
}
close(DAT);

Gruß
Marko

Datum: 23.12.2004-18:05

-






-
-