Thread Datei nach String durchsuchen und in Datei ausgeben
(42 answers)
Opened by QWERTZ7 at 2011-03-22 10:49
Nun hängt die Lösung sehr von der genauen Struktur deiner Datei ab.
Ich gehe mal von folgenden Annahmen aus: - jeder Port-Block endet mit "\n\n" - in einem Port-Block taucht das wort Port nicht auf - die Datei ist nicht zu gross (kleiner 10MB) - "Aktiv" kommt in den Port-Blöcken nur einmal vor - Die Portnummer ist die erste Zahl innerhalb eines Port-Blockes Dann kannst du folgendes versuchen. - die Datei am Stück in eine Variable einlesen - Die Datei in die Portblöcke trennen - in den Portblöcken nach "aktiv" suchen - Die erste Zahl rausfischen => fertig 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 open (FH, <DATEINAME>); # Datei öffen my $file; my @ports; my $port; { local $/ = undef; # den Zeilenendepattern löschen $file = <FH>; # Datei am Stück lesen } # der Zeilenendepattern ist nun wieder hergestellt @ports = split ("Port", $file); # Die Port-Blöcke trennen foreach $port (@ports){ if ($port=~m/Aktiv/){ # Nach "aktiv" suchen $port =~m/(\d+?)/; # Nach der 1. Zahl suchen print $1 , "\n"; # ausgeben } } FtR Last edited: 2011-03-22 12:55:53 +0100 (CET) Code: ()
1 print&f(($_=(3x3)."3+33")=~s=3(?![^3]|$)=&f=eg); |