Ersetzen eines Zeichens durch drei Zeichen
Hallo! Eine CSV-Textsicherung einer Datenbank enthält in einer durch doppelte Anführungszeichen begrenzten Spalte fester Breite mehrere durch FEh getrennte, eigentlich unabhängige Daten. Diese Textdatei möchte ich in mySQL importieren. Ich würde gerne diese Datenfelder beim Import in Einzelspalten aufteilen, indem ich die Sonderzeichen durch "doppeltes Anführungszeichen, Komma, doppeltes Anführungszeichen" ersetze. Also: "A<FEh>B<FEh>C" -> "A","B","C" tr ersetzt aber nur ein Zeichen durch ein anderes und bei sed ist mir nicht klar, wie man nach Binärdaten sucht oder sie ersetzt. Gibt es irgendein Kommando, mit dessen Hilfe ich das bewerkstelligen kann? Danke! -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Volker Fervers schrieb (2.12.2006 14:07):
Hallo!
Eine CSV-Textsicherung einer Datenbank enthält in einer durch doppelte Anführungszeichen begrenzten Spalte fester Breite mehrere durch FEh getrennte, eigentlich unabhängige Daten. Diese Textdatei möchte ich in mySQL importieren. Ich würde gerne diese Datenfelder beim Import in Einzelspalten aufteilen, indem ich die Sonderzeichen durch "doppeltes Anführungszeichen, Komma, doppeltes Anführungszeichen" ersetze. Also:
"A<FEh>B<FEh>C" -> "A","B","C"
tr ersetzt aber nur ein Zeichen durch ein anderes und bei sed ist mir nicht klar, wie man nach Binärdaten sucht oder sie ersetzt. Gibt es irgendein Kommando, mit dessen Hilfe ich das bewerkstelligen kann?
Probiere mit: sed 's/\xFE/\",\"/g' CSV-DATEI Gruß Kimmo -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Samstag, 2. Dezember 2006 15:02 schrieb K. Elo:
sed 's/\xFE/\",\"/g' CSV-DATEI
Ah! Vielen Dank! Bei 173.000 Zeilen wäre mir das händische Ändern trotz Wochenende zuviel Aufwand gewesen... -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Sun 03 Dec 2006 03:24:56 NZDT +1300, Volker Fervers wrote:
Am Samstag, 2. Dezember 2006 15:02 schrieb K. Elo:
sed 's/\xFE/\",\"/g' CSV-DATEI
Ah! Vielen Dank! Bei 173.000 Zeilen wäre mir das händische Ändern trotz Wochenende zuviel Aufwand gewesen...
Natürlich wäre es mit einem Texteditor trivial gewesen. ZB nedit: das zu ersetzende Zeichen mit Cursorbewegung oder shift-right selektieren, mit ^C in den Textpuffer kopieren, ^R für search/replace, mit ^V in das Such-Feld kopieren, im Ersetzen-Feld Deine 3 Zeichen eingeben, auf "all in window" klicken. ^S für speichern. Ich erwarte, das jeder nennenswerte Editor das genauso kann (abgesehen von minimal-Editoren wie joe, die absichtlich keinen Megafunktionsumfang haben). Obiger sed Befehl funktioniert ganz sicher nur mit GNU sed, weil das \x eine nicht-standardisierte Erweiterung ist. Auf Linux solltest Du also keine Probleme haben. Volker (nicht Fervers ;) ) -- Volker Kuhlmann is list0570 with the domain in header http://volker.dnsalias.net/ Please do not CC list postings to me. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (3)
-
K. Elo
-
Volker Fervers
-
Volker Kuhlmann