Thread Logdatei filtern mit regulären Ausdrücken
(16 answers)
Opened by cohama at 2012-02-28 11:24
So, habe jetzt mehr Zeit gehabt und auch ein wenig Testen können.
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 52 53 54 55 56 57 #!/usr/bin/perl use strict; # parameter Definition before use them use warnings; # Version 0.3 my $BString = "Start"; my $EString = 'End'; sub ask_user { my $question = shift; print $question, ": "; chomp( my $answer = <STDIN> ); return $answer; } #> main #> ------------------------------------------------------------------------- system("clear"); my $infile = ask_user( "Please name the input file" ); my $outfile = ask_user( "Please name the output file" ); my $number = ask_user( "Please enter the call number" ); open my $in, '<', $infile or die "open($infile, ro) failed: $!\n"; open my $out, '>', $outfile or die "open($outfile, w) failed: $!\n"; my @alldata; my @data; my $flag = 0; while ( my $line = <$in> ) { if ( $line =~ m/$BString/ .. $line =~ m{$EString} ) { # speichere Zeilen von $Bstring bis $EString push @data, $line; $flag = 1 if $line =~ m{Number=$number}; if ( $line =~ m{$EString} ) { push @alldata, @data; if ( $flag == 1 ) { print $out @data; $flag = 0; } @data = (); } } } close $out; close $in; 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! |