Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

wie Datei splitten?

2 views
Skip to first unread message

Astrid

unread,
Nov 15, 2009, 5:30:57 AM11/15/09
to
Hallo!

Habe eine groessere Datei, die aus Zeilenbloecken
besteht.
Jeder Block hat eine Titelkarte und dann kommen Zeilen
mit Zahlen.
Jeder Block hat unterschiedlich viele Zeilen.
Ich moechte die grosse Datei splitten, dass jeder
Block anschliessend in einer eigenen kleinen Datei steht.

Die Titelkarte besteht aus Buchstaben (mixed case) und Zahlen.

Aber auch die Zeilen mit den Zahlen enthalten leider nicht nur
Zahlen, weil diese im wissenschaftlichen Format dort stehen,
also neben [0..9] auch noch +-.E enthalten.
Die Titelkarte kann aber auch ein E enthalten.

Ein Beispiel fuer die Zahlenzeilen:

3.12870E+00 7.05570E+00 6.37200E+00 2.48330E+00 8.59200E-01
3.96730E-01
1.87960E-01 7.53420E-02 8.22110E-02 7.10710E-02 4.82120E-02
1.46620E-02

Wie kann man so eine Titelkarte erkennen und die Datei dann
entsprechend
splitten?

Gruss, Astrid

ReneeB

unread,
Nov 16, 2009, 3:34:49 AM11/16/09
to
Kannst Du vielleicht einen kompletten Block (inkl. Titelzeile) posten?
Gibt es irgendetwas characteristisches in der Titelzeile (kommen immer
noch andere Buchstaben außer dem "E" vor,...)?

Astrid

unread,
Nov 16, 2009, 8:46:54 AM11/16/09
to
Hallo!

Eher ist es andersherum. In den Nichttitelkarten kommen
[0..9] + - E . und Leerzeichen vor.
In den Titelkarten kommen ausser dem E auch noch andere
Buchstaben vor. Und auch [0..9] + - . und Leerzeichen.

Gruss, Astrid

Wolf Behrenhoff

unread,
Nov 16, 2009, 9:00:20 AM11/16/09
to

Dann findest du raus, ob es eine Titelkarte ist, indem du nach
irgendeinem Buchstaben suchst, der nicht "E" ist.

if ($string =~ /[A-DF-Za-z]/) { ist titelkarte } else {nicht}

Astrid Kuhr

unread,
Nov 14, 2009, 9:00:36 AM11/14/09
to

André Pletschette

unread,
Apr 27, 2010, 2:37:59 AM4/27/10
to
Hallo,

Man müsst hier wissen um welches Split-Kriterium es sich handelt!

Wenn es sich um eine leere Zeile handelt, kann man überprüfen mit

while (<>) {
if (/\S/) {
// ein nicht space-char is vorhanden, normal
print OUTPUT $_;
} else {
close OUTPUT;
open OUTPUT "xxx".i++;

0 new messages