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



#!/COMMUNITY

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




11.02.2012 / 17:42

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


Beitragblock aus logfile ausschneiden
Seitenanfang
halloele , ich mal wieder :D

ich braeuchte mal ne idee wie ich am besten einen
bereich mit ca. 10 zeilen auscheiden kann.

es geht hierbei um ein log file das sehr gross ist
und ich somit nicht in ein array einlesen will/kann,
ergo muss das ganze zeilenweise verarbeitet werden.

der start des block ist bekannt
und sieht so aus

** Alert 1260313202.548:

das ende ist somit auch bekannt sprich der folgende
alert eintrag.

** Alert

nun moechte ich alle zeilen dazwischen einfach in ein
array pushen um die daten weiterzuverarbeiten.

habe zwar eingies gefunden zum auschneiden
jedoch geht man meist von einem scalar aus,
bzw dass der inhalt der datei in einem array steht.

holger

Datum: 09.12.2009-16:18

Beitragre: block aus logfile ausschneiden
Seitenanfang
so ich habe das mal testweise so geloest:

#!/usr/bin/perl -w

# ** Alert 1260313202.548:
# ** Alert 1260313202.293: - pam,syslog,
use strict;
use warnings;

my $line = 0;

open (READ, "</var/ossec/logs/alerts/alerts.log" ) or die ("$!") ;
foreach (<READ>) {
chomp;

if ( $_ =~ /^\*\*\sAlert\s1260313202\.293/) {
$line = 1;
}
print "$_\n" if ($line == 1);
if (( $_ =~ /^\*\*\sAlert\s/) and (not( $_ =~ /1260313202\.293/ ))) {
$line = 0;
}

} # end read

gibt es da eine bessere methode ?

holger

Datum: 09.12.2009-17:38

Beitragre: block aus logfile ausschneiden
Seitenanfang
Dafür würde ich den Flip-Flop-Operator nehmen (ungetestet):

my @array;
while( <READ> ) {
chomp;
if( /^\*{3}\s+Alert\s\d+/ .. /^\*{3}\s+Alert\s*(?!\d)/ ) {
push @array, $_;
}
}

Der Flip-Flop-Operator ist auch in $foo Ausgabe 7 beschrieben... ;-)

Datum: 10.12.2009-16:48

Beitragre: block aus logfile ausschneiden
Seitenanfang
danke hier nochmal das war genau das was ich gesucht habe.

holger

Datum: 05.01.2010-10:48

-






-
-