Importdatei fehlerhaft -> Hilfe mit awk oder sed?

M

Markus371

Grünschnabel
Hallo,

ich habe eine Importdatei, diese wird stündlich zur Verfügung gestellt.
Gelegentlich kommt es vor, dass diese Datei fehlerhaft ist.

In diese Datei werden Zeilen geschrieben, jede Zeile endet mit LF (0A Hex).
Wenn eine Zeile fehlerhaft ist, wird die nächste Zeile unmittelbar an das Ende der vorherigen Zeile angefügt.

Jede neu angefügte Zeile beginnt mit HY....

Frage:

Ist es möglich die Importdatei vor der Weiterverarbeitung auf fehlerhafte Zeilen zu prüfen und ggf. die Zeile zu löschen?

Meine Idee wäre, zu prüfen ob in einer Zeile das Zeichen HY ausser in Spalte 1 und 2 vorkommt. Wenn ja, dann lösche alle Zeichen davor.

Beispiel:

fehlerhaft
HY1345446131311
HY1345444121413
HY134HY134544613154
HY13454846446

bereinigt
HY1345446131311
HY1345444121413
HY134544613154
HY13454846446

Vielen Dank im Voraus.

Gruß
Markus
 
Wie wärs damit?

Code:
sed 's/^HY.*\(HY.*\)$/\1/' importdatei.txt > importdatei_fixed.txt && mv importdatei_fixed.txt importdatei.txt

Entfernt alle fehlerhaften Elemente, schreibt die neue Version nach importdatei_fixed.txt und ersetzt dann die Originaldatei mit der bearbeiteten.

Wenn du den GNU-sed benutzt, geht das auch einfacher:
Code:
sed -i 's/^HY.*\(HY.*\)$/\1/' importdatei.txt
 
... oder auch so:
Code:
sed -e 's/..*HY/HY/g'
Damit sollte der 'sed' auch Zeilen erwischen, die wegen Datenverlust nicht mit HY anfangen, und er sollte alles bis zum letzten HY-Tag löschen, wenn mal mehrere Zeilen in eine einzige zusammengewurstelt werden ...

Gruss, A.
 

Ähnliche Themen

CSV Datei mit sed manipulieren/optimieren/ergänzen

Zurück
Oben