Hallo zusammen,
ich habe folgendes Problem:
In einer Log-Datei suche ich nach bestimmten Zeilen.
$zeile = $_;
chomp($zeile);
$tmp = 'Transaction Project=9000';
if($TheLine =~ /$tmp/)
zu diesem Zeitpunkt ist die Zeile (Transaction Project=9000) gefunden. Nun muß ich jedoch ein paar Zeilen runter in der Log-Datei, um eine ganz bestimmte Zeile auszuwerten, und genau das bereitet mir einige Probleme.
Wenn jemand ein Lösung parat hätte, wäre ich sehr dankbar.
Gruss Walter
User since
2007-03-26
2
Artikel
BenutzerIn
Ups,
die Zeile "if($TheLine =~ /$tmp/)" soll "if($zeile =~ /$tmp/)" heissen
User since
2003-08-04
14371
Artikel
ModeratorIn
my ($bool,$lineno);
my $plus = 10; # mich interessiert die 10. Zeile nachdem $tmp
my $tmp = 'Transaction Project=9000';
while( my $line = <FILEHANDLE> ){
next if $bool and $. != $lineno + $plus;
if( $line =~/$tmp/ ){
$bool = 1;
$lineno = $.;
next;
}
# mach was mit der Zeile x + 10...
}
Vielleicht gibt es auch eine elegantere Lösung, aber dazu müsste man wissen, ob die Log-Datei einen festen Aufbau hat oder ob zusammhängende Zeilen irgendwie eingegrenzt sind...
User since
2003-08-21
2613
Artikel
ModeratorIn
renee: Muesste man
$bool nicht irgendwann wieder auf 0 setzen?
User since
2007-03-26
2
Artikel
BenutzerIn
Hallo Renee,
danke für Deinen Tip, hat mich weitergebracht.
Gruss
Walter
User since
2003-08-04
14371
Artikel
ModeratorIn
[quote=betterworld,26.03.2007, 16:21]renee: Muesste man
$bool nicht irgendwann wieder auf 0 setzen?[/quote]
Kommt darauf an... Wenn das $tmp nur einmal vorkommen will und man dann auch nur die 10. Zeile danach bearbeiten will, dann nicht. Aber generell hast Du schon recht.