Thread Zeilen Suchen und Zählen
(9 answers)
Opened by UliK at 2016-06-27 14:35
Hi,
Du kannst mit perlfunc substr Teilstrings ausschneiden; z.B. mit substr($line, 0, 3) die ersten drei Zeichen des Strings in $line. Weitere Anmerkungen zum Skript: - Du liest die Datei erstmal komplett in den Speicher und verarbeitest danach erst die Daten. - Wenn die Datei sehr groß ist, verbraucht das unnötig Speicher und kann vermieden werden - Ein leerer Array sollte mit @array=(); erzeugt werden; mit @array=("") hast Du gleich ein Element darin (einen Leerstring). war das gewünscht? - sogenannte "lexikalische Datei-Handles" sind besser als "Bareword" Handles - open sollte in der "3-Argumente-Form" benutzt werden; spätestens, wenn der Dateiname in einer Variablen steht Hier mal eine etwas angepasste Version Deines Skriptes: 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 #!/usr/bin/perl ############################################################################################################### # count_tool.pl # Description: This tool count all Lines in a File beginning with 1L and writes a Mail if the count is # over a specific Limit # Author: Ulrich Kehder ############################################################################################################### #-------------------------------------------------------------------------------------------------------------- # Definition of libraries and global variables #-------------------------------------------------------------------------------------------------------------- my $VERSION = "1.0.0.0"; # versionnumber of this tool # default libraries use 5.008; # perl version 5.8 is required use strict; # use strict conditioning use warnings; # output optional warnings # default variable my @Zeilen = (); $ENV{"ENV"} = ""; $ENV{"PATH"} = "/usr/bin"; ############################################################################################################### # MAIN program ############################################################################################################### # lexical filehandle; 3-argument-open, and use $! for error diagnosis open( my $countfile, "<", "/nhdata/pptoll.310") || die "Konnte Counter-Datei nicht oeffnen: $!\n"; # Open to Read or close and End Program while(<$countfile>) { if ( "01L" eq substr( $_, 0, 3 ) ) { print $_; } } close($countfile); meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |