Strategien für den Umgang mit einer Datei mit mehreren festen Formaten

Diese Frage istnich Perl-spezifisch (obwohl dasunpack -Funktion wird höchstwahrscheinlich in meine Implementierung einfließen.

Ich muss mich mit Dateien befassen, in denen mehrere Formate existieren, um die Daten hierarchisch in sinnvolle Abschnitte aufzuteilen. Ich möchte in der Lage sein, die Dateidaten in eine geeignete Datenstruktur zu zerlegen.

Hier ist ein Beispiel (Kommentar zu RHS):

                                       # | Format | Level | Comment
                                       # +--------+-------+---------
**DEVICE 109523.69142                  #        1       1   file-specific
  .981    561A                         #        2       1
10/MAY/2010    24.15.30,13.45.03       #        3       2   group of records
05:03:01   AB23X  15.67   101325.72    #        4       3   part of single record
*           14  31.30474 13        0   #        5       3   part of single record
05:03:15   CR22X  16.72   101325.42    #        4       3   new record
*           14  29.16264 11        0   #        5       3
06:23:51   AW41X  15.67    101323.9    #        4       3
*           14  31.26493219        0   #        5       3
11/MAY/2010    24.07.13,13.44.63       #        3       2   group of new records
15:57:14   AB23X  15.67   101327.23    #        4       3   part of single record
*           14  31.30474 13        0   #        5       3   part of single record
15:59:59   CR22X  16.72   101331.88    #        4       3   new record
*           14  29.16264 11        0   #        5

Die Logik, die ich im Moment habe, ist fragil:

Ich weiß zum Beispiel, dass ein Format 2 immer hinter einem Format 1 steht und dass sie nur 2 Zeilen umfassen.Ich weiß auch, dass die Formate 4 und 5 immer paarweise vorliegen, da sie einem einzelnen Datensatz entsprechen. Die Anzahl der Datensätze kann variabel sein Ich verwende reguläre Ausdrücke, um das Format jeder Zeile abzuleiten. Dies ist jedoch riskant und bietet keine Flexibilität für die Zukunft (wenn sich jemand entscheidet, das Format der Ausgabe zu ändern).

Die große Frage hier ist, mit welchen Strategien ich feststellen kann, welches Format für welche Zeile verwendet werden muss. Es würde mich interessieren, ob andere mit ähnlichen Situationen konfrontiert sind und was sie getan haben, um dies zu beheben.

Antworten auf die Frage(12)

Ihre Antwort auf die Frage