Thread Zeilensprung in einer Ausgabe
(15 answers)
Opened by Gast at 2008-11-18 14:19
Das hier ist eine mögliche Lösung:
Es wird block-/abschnittsweise eingelesen und der vordefinierte Regex auf den Block angewandt. Dabei ist zu beachten, dass die Modifier /x und /s verwendet werden. 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 58 #!/usr/bin/perl use strict; use warnings; my ( $sp, $port ) = qw( A 5 ); # perldoc perlretut; perldoc perlrequick; perldoc perlre my $regex = qr{ SP\sName:\sSP\s\Q$sp\E \s+ SP\sPort\sID:\s\Q$port\E \s+ .* Link\sStatus:\s(\S+) \s+ }sx; { # perldoc perlvar local $/ = "\n\n"; while ( my $block = <DATA> ) { if ( $block =~ $regex ) { print "Link Status: $1\n"; } } } __DATA__ SP Name: SP A SP Port ID: 4 SP UID: 50:06:01:60:C1:E0:2B:7A:50:06:01:60:41:E0:2B:7A Link Status: Up Port Status: Online Switch Present: YES Switch UID: 10:00:00:05:1E:03:D9:16:20:07:00:05:1E:03:D9:16 SP Source ID: 67328 MAC Address: Not Applicable SFP State: Online Reads: 3064353 Writes: 17936913 Blocks Read: 103971645 Blocks Written: 867380028 Queue Full/Busy: 0 SP Name: SP A SP Port ID: 5 SP UID: 50:06:01:60:C1:E0:2B:7A:50:06:01:61:41:E0:2B:7A Link Status: Down Port Status: Online Switch Present: NO MAC Address: Not Applicable SFP State: Online Reads: 0 Writes: 74801 Blocks Read: 0 Blocks Written: 19186170 Queue Full/Busy: 0 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! |