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!
Man macht es nicht jeden Tag, darum schadet es nicht sich's kurz zu notieren... Hier…
Meine Suche bei Google hatte mal wieder keinen vernünftigen Treffer gelandet, das Problem - ich…
Ich muss mal eben etwas Druck ablassen, ein Kunde von mir setzt einen Drucker von…
Wer beim Server bestellen vergessen hat die erweiterte IRMC Lizenz zu ordern, der steht vor…
Ich nutze seit langer Zeit ein System für meine Backups welches in der Nacht von…
Es scheint wohl eine noch nicht so häufig genutzte Kombination zu sein - Apache Guacamole…