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



#!/COMMUNITY

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




12.02.2012 / 02:27

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


BeitragIn einer Datei nach einem bestimmten Wort suchen und ...
Seitenanfang
Guten Tag,

ich hätte eine Frage, ich habe eine Textdatei, wo ganz oft z.B. erfolgreich und fehlgeschlagen drin steht und ich würde die Textdatei gerne durchsuchen und z.B. Ausgeben lassen, dass 13 mal Erfolgreich gefunden wurde und 5 mal fehlgeschlagen steht.

===========================================
#!/usr/bin/perl

use strict;

my $erfolgreich;
my $zahlerfolgreich;
my $fehlgeschlagen;
my $zahlfehlgeschlagen;

my $logdir = "/home/ordner";
my $logdatei="$logdir/textdatei.txt";

open (LOGDATEI, "<$logdatei");
while (<LOGDATEI>)
{
if ($erfolreich =~ /erfolgreich/)
{
$zahlerfolgreich++;
}

elsif($fehlgeschlagen =~ /fehlgeschlagen/)
{
$zahlfehlgeschlagen++;
}
}
CLOSE (LOGDATEI);

print "Erfolgreich wurde ".$zahlerfolgreich." mal gefunden";
print Fehlgeschlagen wurde ".$zahlfehlgeschlagen." mal gefunden";

exit;
=============================================

Kann es leider nicht testen, aber von der Idee her, würde es so funktionieren?
Oder habe ich hier irgendwelche Fehler?
Gibt es vielleicht noch viel leichtere Lösungen?

Ich würde mich über eine Antwort sehr freuen!

MfG
Gregor

Datum: 24.04.2007-12:49

Beitragre: In einer Datei nach einem bestimmten Wort suchen und ...
Seitenanfang
(ungetestet)

use strict;
use warnings;

my %counter =
(
erfolgreich => 0,
fehlgeschlagen => 0
);

open my $logfile, '<', 'textdatei.txt' or die $!;
while (<$logfile>)
{
chomp;
$counter{$1}++ if (/(erfolgreich|fehlgeschlagen)/g);
}
close $logfile;

print qq(erfolgreich: $counter{erfolgreich}\n);
print qq(fehlgeschlagen: $counter{fehlgeschlagen}\n);

Datum: 24.04.2007-13:39

Beitragre: In einer Datei nach einem bestimmten Wort suchen und ...
Seitenanfang
Hallo whoever,

danke für dein beispiel Skript, aber leider kriege ich es nicht zum laufen.
Das Skript sieht nun so aus:
===============================================


use strict;

my %counter =
(
erfolgreich => 0,
fehlgeschlagen => 0
);

Counter();

print qq(erfolgreich: $counter{erfolgreich}\n);
print qq(fehlgeschlagen: $counter{fehlgeschlagen}\n);

exit;

sub Counter
{
open my $logfile, '<', 'textdatei.txt' or die $!;
while (<logfile>)
{
chomp;
$counter{$1}++ if (/(erfolgreich|fehlgeschlagen)/g);
}
close $logfile;
}


==============================================
Irgendwas funktioniert nicht beim zählen, also $counter{$1}++, aber ich komme nicht drauf, was daran falsch sein könnte.
Ich verstehe auch noch nicht so ganz was {$1} bezweckt?
Müsste ich auch eventuell Parameter übergeben an die Subroutine?
Ich würde mich noch über paar Antworten sehr freuen!
Mit freundlichen Grüßen
Gregor

Datum: 24.04.2007-22:07

Beitragre: In einer Datei nach einem bestimmten Wort suchen und ...
Seitenanfang
du hast einen fehler in der while schleife...
<logfile> muss <$logfile> lauten

ich hatte aber auch noch einen fehler drin, das aber funktioniert

nach /(erfolgreich|fehlgeschlagen)/ steht in $1 entweder erfolgreich oder eben fehlgeschlagen drin, weil der ausdruck geklammert ist

sub Counter
{
open my $logfile, '<', 'textdatei.txt' or die $!;
while (<$logfile>)
{
while (/(erfolgreich|fehlgeschlagen)/g) { $counter{$1}++ }
}
close $logfile;
}

Datum: 25.04.2007-07:55

Beitragre: In einer Datei nach einem bestimmten Wort suchen und ...
Seitenanfang
Vielen dank für deine Hilfe whoever.
Leider habe ich erst morgen die Gelegenheit das Skript zu testen, aber ich denke mal das ich es nun zum laufen bringen werde:).

Mit freundlichen Grüßen
Gregor

Datum: 25.04.2007-11:02

-






-
-