3 Zeilen davor und 2 danach

30/06/2008 - 13:05 von Astrid Kuhr | Report spam
Hallo!

Eine ziemlich grosse Datei enthaelt
jeweils "Zeilenpakete" mit je 6 Zeilen.
Ich moechte jetzt nur diejenigen Zeilenpakete
in eine andere Datei schreiben, die ein
bestimmtes Keyword enthalten.
Dummerweise steht das Keywort nicht in der
ersten Zeile des Zeilenpaketes.
Wenn das Keywort in der Zeile auftaucht,
dann brauche ich die 3 Zeilen davor,
die Zeile mit dem Keywort und die 2
naechsten Zeilen danach.

Wie kann man das geschickt loesen?
Ich koennte die Datei komplett einlesen,
dann zeilenweise einlesen und auf das
Keywort checken.
Aber weil die Datei ziemlich gross ist,
wuerde das natuerlich ein monstermaessiges
Feld werden.
Und die Pakete, die ich letztendlich brauche
sind nur ein ganz ganz ganz geringer Prozentsatz
der Ursprungsdatei.

Gibs da was Besseres, wo nicht die ganze
Datei auf ein Feld gelesen werden muss?

Gruss, Astrid
 

Lesen sie die antworten

#1 Moritz Lenz
30/06/2008 - 13:49 | Warnen spam
Astrid Kuhr wrote:
Hallo!

Eine ziemlich grosse Datei enthaelt
jeweils "Zeilenpakete" mit je 6 Zeilen.
Ich moechte jetzt nur diejenigen Zeilenpakete
in eine andere Datei schreiben, die ein
bestimmtes Keyword enthalten.
Dummerweise steht das Keywort nicht in der
ersten Zeile des Zeilenpaketes.
Wenn das Keywort in der Zeile auftaucht,
dann brauche ich die 3 Zeilen davor,
die Zeile mit dem Keywort und die 2
naechsten Zeilen danach.

Wie kann man das geschickt loesen?



Die Datei Block für Block einlesen, in jedem Block nach dem Wort suchen,
und wenn es vorkommt in die andere Datei schreiben.
Lies dir man in `perldoc perlop' den Abschnitt zu $/ durch.

HTH,
Moritz

Moritz Lenz
http://perl-6.de/ http://moritz.faui2k3.org/

Ähnliche fragen