Thread Logdatei ab bestimmter Zeile durchsuchen (11 answers)
Opened by deadfm at 2013-01-22 15:43

deadfm
 2013-01-22 15:43
#165123 #165123
User since
2013-01-22
7 Artikel
BenutzerIn
[default_avatar]
Hallihallo, Menschen! :)

Ich hänge momentan an einem kleinen Problemchen und wollte mich mal an euch wenden, in der Hoffnung ihr könnt mir etwas weiter helfen.

Ich habe die aufgabe, ein Perlskript zu schreiben, welches eine Logdatei nach gewissen Einträgen durchsucht, diese dann zählt und im nachhinein auf dem Bildschirm ausgibt, z.b. durchsucht das Skript die Datei nach dem String "eingepflegt", zählt diese dann und gibt sie aus.

Das habe ich soweit schon hinbekommen, zum Schluss steht dann "Erfolgreich eingepflegt: anzahl" etc, und das natürlich aus der gesamten Datei.
Nun ist es so, dass ich das eigentlich nur für einen Bestimmten Bereich machen soll. In dem Logfile sind mehrere Prozesse mitgeloggt worden und ich bräuchte dieses ganze Prozedere nur von Zeile soundso bis Zeile soundso.

Was ich bislang gemacht habe war, die Datei komplett in ein Array einzulesen und dann hinterher mit "splice" die Elemente aus dem Array bis zu der Zeile, die ausgewertet werden soll abgeschnitten.

Allerdings ist das nun keine Universallösung und kann nur spezifisch bei dieser einen Datei angewandt werden.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/usr/bin/perl

print "Geben Sie den namen der .log Datei ein: " ;
my $log =<STDIN>;
open(LOG, $log) || die "Log nicht gefunden";
#my $log =<STDIN>;
my @zeilen = <LOG>;
my $zeilen;
my $korr = "eingepflegt";
my $err = "Fehler";
my $versch = "Verschiebe";
my $cversch = 0;
my $cerr = 0;
my $cerflg = 0;
my $belegezeile = "30917";

splice(@zeilen, 0, 180);
foreach $zeilen(@zeilen)
{
    if(index($zeilen, $belegezeile)ge 0)
    {
        print "Beginne belege $belegezeile";
    }
    if(index($zeilen, $versch )ge 0)
    {
        $cversch ++;
    }
    if(index($zeilen, $err )ge 0)
    {
        $cerr ++;
    }
    if(index($zeilen, $korr) ge 0)
    {
        $cerflg ++;
    }
}
close(LOG);
print $zeilen[0];
#print $zeilen[180];

print "\n";
print "Datei eingelesen...\n";
print "----------------------------------------------------\n";
sleep 1;
print "Verschobene Dateien: $cversch\n";
print "----------------------------------------------------\n";
sleep 1;
print "Erfolgreich eingepflegte Dateien: $cerflg\n";
print "----------------------------------------------------\n";
sleep 1;
print "Fehler: $cerr\n";


Ich hoffe ihr könnt mir ein wenig helfen, bin noch absoluter neuling was Perl betrifft.

Danke schonmal im Vorraus!
Last edited: 2013-01-22 15:46:52 +0100 (CET)

View full thread Logdatei ab bestimmter Zeile durchsuchen