Thread Regex über mehrere Zeilen
(10 answers)
Opened by kameltreiber at 2012-01-18 11:26
Ist die Anzahl der Punkte immer gleich? Dann könntest Du es blockweise einlesen lassen:
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 #! /usr/bin/perl sub read_blocks { my $handle = shift; local $/ = shift; while ( my $block = <$handle> ) { # replace newlines with simple space $block =~ tr/\r\n/ /s; print ">>> $block <<<\n"; } } # give it a handle, and the block delimiter read_blocks( *DATA, "....\n" ); __DATA__ la le lu .... foo bar .... what ever .... Ansonsten könnte man die Datei auch zeilenweise einlesen, und die eingelesenen Zeilen zwischenspeichern bis eben die Punkt-Sequenz auftaucht und dann die gesammelten Zeilen modifiziert ausgeben... edit: 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 #! /usr/bin/perl my @collected; while ( my $line = <DATA> ) { # line must end with 4 points if ( $line =~ m/\Q....\E$/ ) { chomp @collected; push @collected, $line; print "@collected"; @collected = (); } else { push @collected, $line; } } __DATA__ la le lu .... foo bar .... what ever .... Beides hat den Vorteil, dass die Datei nicht komplett eingelesen wird, sondern immer nur Teile davon... /edit Last edited: 2012-01-18 11:46:57 +0100 (CET) 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! |