Categories: Linux

SED/TR bedingt Zeilenschaltungen entfernen

Hab ich gestern lange damit rumgewurschtelt und bin zu keinem wirklichen Ergebnis gekommen!

Aber manchmal hilft es einfach eine Nacht drüber zu schlafen und sich dann ausgeschlafen noch einmal damit zu beschäftigen und wie so oft ist die Lösung dann in wenigen Minuten gefunden…

Das Problem war dass ich von einem Datenbankexport einen Haufen Datensätze habe, dessen Felder mit „|“ getrennt sind und am Ende des Datensatzes eine Zeilenschaltung steht. Bei manchen Felder gibts jedoch innerhalb des Feldes ein oder mehrere Zeilenschaltungen und daher kann man in dem Fall das Ende des Datensatzes nicht korrekt feststellen.

Zum Glück ist in jedem dieser Fälle am Ende der Zeile ein „“ und dann erst die Zeilenschaltung – also eigentlich ganz einfach jede Zeile mit „“ und Zeilenschaltung ist nicht das Ende eines Datensatzes sondern eine Zeilenschaltung innerhalb eines Datenfeldes.

Also einfach die „“-Zeilenschaltung durch „<br>“ ersetzen und fertig! 🙂

Nichts leichter als das – leider bekommt SED die Zeilenschaltung nicht zu sehen und daher kann ich da nicht einfach mit Ersetzen arbeiten. Sämtliche Versuche mit Puffern und was auch immer von SED angebotenen zu arbeiten haben leider nicht wirklich funktioniert, teilweise wurden zwar welche gefunden aber nicht so zuverlässig wie ich das benötige.

Ich habe mir daher ein Zeichen gesucht welches definitiv nicht vorkommt und alle Zeilenschaltungen erst durch dieses Zeichen ersetzt „‡“, vorher noch das Carriage Return entfernt und „“ durch <br> ersetzt. Am Ende kann man dann die Ersetzung von „‡“ wieder rückgängig machen.

Hier also mein Konstrukt:

sed -e „s/\.$/<br>/“ -e ’s/r//g‘ original_datei.sql |
tr ’n‘ ‚‡‘ |
sed -e ’s/<br>xe2/<br>/g‘ -e ’s/xe2/n/g‘ > ausgabe_datei.sql

Und schon sieht das Ganze so aus wie ich das zum Einlesen in MySQL benötige.
Mit etwas Glück klappt der nächste Schritt dann ohne weitere Probleme!

Manfred

Recent Posts

VM – ZFS Partition online vergrößern

Man macht es nicht jeden Tag, darum schadet es nicht sich's kurz zu notieren... Hier…

9 Monaten ago

Samba Password History für einen User löschen

Meine Suche bei Google hatte mal wieder keinen vernünftigen Treffer gelandet, das Problem - ich…

10 Monaten ago

HP Eine Firma von der ich nicht mal geschenkte Drucker nehmen würde!!!

Ich muss mal eben etwas Druck ablassen, ein Kunde von mir setzt einen Drucker von…

12 Monaten ago

IRMC Console Redirection ohne Lizenz

Wer beim Server bestellen vergessen hat die erweiterte IRMC Lizenz zu ordern, der steht vor…

1 Jahr ago

WOL im BIOS aktivieren reicht nicht immer

Ich nutze seit langer Zeit ein System für meine Backups welches in der Nacht von…

1 Jahr ago

Apache Guacamole mit TOPT – funktioniert nicht

Es scheint wohl eine noch nicht so häufig genutzte Kombination zu sein - Apache Guacamole…

1 Jahr ago