Thread Match Pattern über mehrere Zeilen
(3 answers)
Opened by bora99 at 2020-11-13 23:11
Hallo,
in einem Script habe ich folgenden Vorschlag für Suche in einer Datei mit Zeilen mit 1. "(" und 1. ")" - Die Zeichen "(" , ")" können an einer beliebigen Stelle sich befinden, dahinter ein Pattern Erstellung Testfile Code: (dl
)
1 cat > testfile <<-EOF Ergebnis: ( START zeile2 zeile3 ) ENDE Versucht habe ich in Script den Code Code (perl): (dl
)
if (/BEGIN PATTERN/ .. /END PATTERN/) { aber nur mit dem Script bin ich zum Ergebnis gekommen. Ergebnis soll gespeichert werden in einem Array. Es funktioniert wahrscheinlich besser ? Aber soll kein One Liner sein 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 -w my $TestFile = "testfile"; my $found1 = 0; my $found2 = 0; my %found_arr = (); my $i = 0; if( ! open( TFH, $TestFile)) { print STDERR "Test File '$TestFile' kann nicht gelesen werden !\n"; exit 1; } while( $line = <TFH> ) { chomp $line; if( ( $line =~ m/^\s*([\x28])/i ) && ( ! $found1 ) ) { $found_arr[$i]=$line; $i++; $found1 ++; } if( ( $found1 ) && ( ! $found2 ) ) { if( ! $found2 ) { if( ( $line !~ m/^\s*([\x28])/i ) && ( $line !~ /\Q)/ ) ) { $found_arr[$i]=$line; $i++; } else { if( $line =~ /\Q)/ ) { $found2 ++; $found_arr[$i]=$line; $i++; } } } } } close( TFH); for( $i = 0; $i <= $#found_arr; $i++) { print "$found_arr[$i]\n"; } exit 0; Last edited: 2020-11-13 23:12:49 +0100 (CET) |