Vorbemerkung: Ich habe eine Textdatei von einem Mac für einen mysql-Import mit _1_ Zeile und 10MB, die ich remote editieren möchte. Vermutlich sind in der Datei ein oder mehrere unterschiedliche Sonderzeichen vorhanden, wodurch mysql warnings beim Import meldet und phpMyAdmin Fehlermeldungen im php-Code bringt. Auch ein Export der Daten führt bei phpMyAdmin zu einem "Document contained no data", obwohl man mit "Browse" Datensätze sehen kann. Ein Wort wie "Inquietação" wird korrekt mit mysqlcc dargestellt, phpMyadmin hat aber Probleme damit. Ich habe versucht die Datei mit less zu lesen. Nach 10 Minuten konnte ich noch immer nicht scrollen und nach 20 Minuten geht es sehr langsam. Zwischen verschiedenen Worten befindet sich invers die Zahl 226. Ich vermute, das ist der ASCII-Code eines der Problemzeichen. Andererseits ASCII 226 ist â und das sollte eigentlich nicht zu Problemen führen. Mit welchem Editor und wie ersetze ich nun remote diese "inversen 226" und was wird für ein Zeichen anstatt wird vorgeschlagen? IMO war dort ursprünglich (ASCII 173). Dieser verkürzte Bindestrich dürfte nicht unproblematisch sein. Es wäre gut, wenn ich mit einem eindeutigen "Trennzeichen" ersetzen könnte, ein Bindestrich wäre nur 2. Wahl, da ich dann später dieses Problemzeichen nicht mehr eindeutig lokalisieren kann. Danke für Tipps. Al
Hi, 0n 03/11/02@11:45 Al Bogner told me: [Problem mit langem MAC file] goolge meint: tr '\r' '\n' < macfile.txt > unixfile.txt Mach eine Sicherung und probier es aus. -- bye maik
Am Sonntag, 2. November 2003 12:21 schrieb Maik Holtkamp:
goolge meint:
tr '\r' '\n' < macfile.txt > unixfile.txt
Mach eine Sicherung und probier es aus.
Hallo Maik, ich glaube die Zeilenumbrüche sind nicht mein Problem. Bei mysql kann man alles mögliche für den Import angeben, u.a. "\r\n". Ein neuer Datesatz ist in der Textdatei durch ||| gekennzeichnet. Importiert wurde also so: LOAD DATA INFILE '/publik/test.txt' REPLACE INTO TABLE `basis` FIELDS TERMINATED BY '\t' LINES TERMINATED BY '|||'; Query OK, 21499 rows affected (1.41 sec) Records: 21499 Deleted: 0 Skipped: 0 Warnings: 2379 Die Textdatei anders zu erstellen, ist zwar nicht unmöglich, läßt sich aber aus lokalen Gründen nicht so ohne weiteres realisieren. Ich würde gerne testen was passiert wenn diese "226" nicht mehr vorhanden sind. Irgendwie muß man dieses Zeichen doch ersetzen können. Al
Hallo!
On Sun, 2 Nov 2003 12:48:41 +0100
Al Bogner
Am Sonntag, 2. November 2003 12:21 schrieb Maik Holtkamp:
goolge meint:
tr '\r' '\n' < macfile.txt > unixfile.txt
Mach eine Sicherung und probier es aus.
ich glaube die Zeilenumbrüche sind nicht mein Problem. Bei mysql kann > man alles mögliche für den Import angeben, u.a. "\r\n". Ein neuer Datesatz ist in der Textdatei durch ||| gekennzeichnet. [...] Ich würde gerne testen was passiert wenn diese "226" nicht mehr vorhanden sind. Irgendwie muß man dieses Zeichen doch ersetzen können.
tr '\342' '\255' < macfile.txt > unixfile.txt Ersetze Zeichen mit dem oktalen Code 342 (== 226d) durch das Zeichen 173d (== 255o). tr kann auch Zeichen löschen, bzw. mehrere gleichzeitig ersetzen. Viele Grüße Ralf
Am Sonntag, 2. November 2003 13:46 schrieb Ralf Schuchardt:
Ich würde gerne testen was passiert wenn diese "226" nicht mehr vorhanden sind. Irgendwie muß man dieses Zeichen doch ersetzen können.
tr '\342' '\255' < macfile.txt > unixfile.txt
Ersetze Zeichen mit dem oktalen Code 342 (== 226d) durch das Zeichen 173d (== 255o).
tr kann auch Zeichen löschen, bzw. mehrere gleichzeitig ersetzen.
tr '\342' '\255' < test2.txt > unixfile.txt funktioniert nicht. Vermutlich weil das zu ersetzende Zeichen nicht das ist, das ich verändern möchte. Rufe ich die Originaldatei mit less auf, dann dauert es jedes Mal an die 15min. bis ich scrollen kann. Das ist natürlich lästig beim Testen. Mit vi kann man sich nach einigen Sekunden in der Datei bewegen und man sieht dann wie erwähnt in _blau_ die Anzeige ~U ~F ~R ~V ~S ~J ~K. Wie finde ich den ASCII-Wert des von vi angezeigten Zeichens raus bzw. wie kann ich diese Zeichen nach dem Schema ":%s/Suchen_nach/Ersetzen_durch/" durch nichts ersetzen? Al
Hi, 0n 03/11/02@16:04 Al Bogner told me:
Am Sonntag, 2. November 2003 13:46 schrieb Ralf Schuchardt:
Ich würde gerne testen was passiert wenn diese "226" nicht mehr vorhanden sind. Irgendwie muß man dieses Zeichen doch ersetzen können.
tr '\342' '\255' < macfile.txt > unixfile.txt
Ersetze Zeichen mit dem oktalen Code 342 (== 226d) durch das Zeichen 173d (== 255o).
tr kann auch Zeichen löschen, bzw. mehrere gleichzeitig ersetzen.
tr '\342' '\255' < test2.txt > unixfile.txt funktioniert nicht. Vermutlich weil das zu ersetzende Zeichen nicht das ist, das ich verändern möchte.
Rufe ich die Originaldatei mit less auf, dann dauert es jedes Mal an die 15min. bis ich scrollen kann. Das ist natürlich lästig beim Testen. Mit vi kann man sich nach einigen Sekunden in der Datei bewegen und man sieht dann wie erwähnt in _blau_ die Anzeige ~U ~F ~R ~V ~S ~J ~K.
Wie finde ich den ASCII-Wert des von vi angezeigten Zeichens raus bzw. wie kann ich diese Zeichen nach dem Schema ":%s/Suchen_nach/Ersetzen_durch/" durch nichts ersetzen?
Diese Tilden Dinger kenne ich nicht, aber solche Sonderzeichen gibst Du vim normalerweise durch ein vorangestelltes strg+v <Zeichen> wie hier: -- bye maik
Am Sonntag, 2. November 2003 16:25 schrieb Maik Holtkamp:
vi kann man sich nach einigen Sekunden in der Datei bewegen und man sieht dann wie erwähnt in _blau_ die Anzeige ~U ~F ~R ~V ~S ~J ~K.
Wie finde ich den ASCII-Wert des von vi angezeigten Zeichens raus bzw. wie kann ich diese Zeichen nach dem Schema ":%s/Suchen_nach/Ersetzen_durch/" durch nichts ersetzen?
Diese Tilden Dinger kenne ich nicht, aber solche Sonderzeichen gibst Du vim normalerweise durch ein vorangestelltes strg+v <Zeichen> wie hier:
Maik, nach "hier:" kann ich nichts mehr lesen. strg+v ergibt hier ^. ^M habe ich zwar auch im Text, aber diese Zeilenumbrüche innerhalb eines Feldes sollen bleiben. Machen wir es mal einfacher, wie könnte ich nach diesen Zeichen nur suchen? Suche ich nach ~V erhalte ich: "E33: Kein vorheriger regulärer Ersetzungs-Ausdruck", bzw mit ^V kommt: "Muster nicht gefunden: ^V" Al
Hi, 0n 03/11/02@17:04 Al Bogner told me:
Am Sonntag, 2. November 2003 16:25 schrieb Maik Holtkamp:
vi kann man sich nach einigen Sekunden in der Datei bewegen und man sieht dann wie erwähnt in _blau_ die Anzeige ~U ~F ~R ~V ~S ~J ~K.
Wie finde ich den ASCII-Wert des von vi angezeigten Zeichens raus bzw. wie kann ich diese Zeichen nach dem Schema ":%s/Suchen_nach/Ersetzen_durch/" durch nichts ersetzen?
Diese Tilden Dinger kenne ich nicht, aber solche Sonderzeichen gibst Du vim normalerweise durch ein vorangestelltes strg+v <Zeichen> wie hier:
Maik, nach "hier:" kann ich nichts mehr lesen.
strg+v <CR> also ^M sollte da gestanden haben, aber vielleicht schicke ich auch schneller ab, als ich tippe ;).
Machen wir es mal einfacher, wie könnte ich nach diesen Zeichen nur suchen? Suche ich nach ~V erhalte ich: "E33: Kein vorheriger regulärer Ersetzungs-Ausdruck", bzw mit ^V kommt: "Muster nicht gefunden: ^V"
Keine Ahnung ich weiss nicht wie man diesen Tildenkram eingeben kann. Vielleicht geht es wenn Du negierst, also etwa sowas: [^a-zA-zaeoeue+#....] das ist aber eigentlich auch nicht die wahre Lehre ;) -- bye maik
Wie finde ich den ASCII-Wert des von vi angezeigten Zeichens raus bzw. wie kann ich diese Zeichen nach dem Schema ":%s/Suchen_nach/Ersetzen_durch/" durch nichts ersetzen?
Ich kenne mich nur mit dem vim aus. Daher betreffen die folgenden Tips nur vim. Was unter SuSE dasselbe wie vi ist. Um den ASCII Wert eines Buchtstabens / Zeichens herauszufinden: siehe ':help :ascii'.
Diese Tilden Dinger kenne ich nicht, aber solche Sonderzeichen gibst Du vim normalerweise durch ein vorangestelltes strg+v <Zeichen> wie hier:
Um es genau zu wissen, mal ':help isprint' eigeben. Da steht es genau: Non-printable characters are displayed with two characters: 0 - 31 "^@" - "^_" 32 - 126 always single characters 127 "^?" 128 - 159 "~@" - "~_" 160 - 254 "| " - "|~" 255 "~ Um einen Zeichen mittels seines ASCII Codes einzugeben siehe ':help i_CTRL-V_digit'. Beim suchen und ersetzen funktioniert das mit dem <CTRL-V> auch. Siehe ':help c_CTRL-V' oder ':help c_CTRL-Q'. Hoffe das hilft. Mike
Am Sonntag, 2. November 2003 21:34 schrieb Michael 'Mike' Jansen:
Um den ASCII Wert eines Buchtstabens / Zeichens herauszufinden: siehe ':help :ascii'.
Danke, das hilft sehr weiter. Wenn ich den Buchstaben markiere und dann
:help eingebe, kommt zB
<~V>
Am Sonntag, 2. November 2003 22:52 schrieb Al Bogner:
Danke, das hilft sehr weiter. Wenn ich den Buchstaben markiere und dann
:help eingebe, kommt zB
<~V>
150, Hex 96, Oktal 226
Es muß natürlich nicht :help, sondern :ascii heißen. Sorry! Al
Am Sonntag, 2. November 2003 22:52 schrieb Al Bogner:
Am Sonntag, 2. November 2003 21:34 schrieb Michael 'Mike' Jansen:
Um den ASCII Wert eines Buchtstabens / Zeichens herauszufinden: siehe ':help :ascii'.
Danke, das hilft sehr weiter. Wenn ich den Buchstaben markiere und dann
:ascii eingebe, kommt zB
<~V>
150, Hex 96, Oktal 226 Es sieht fast so aus, dass ich es nun Zeichen für Zeichen schaffen werde.
Kann man 128d - 159d irgendwie in _einem_ Rutsch mit nichts ersetzen
:%s/[~@-~_]//g Das dürfte nun gepasst haben. Al
On Sun, 2 Nov 2003 16:04:10 +0100
Al Bogner
Am Sonntag, 2. November 2003 13:46 schrieb Ralf Schuchardt:
Ich würde gerne testen was passiert wenn diese "226" nicht mehr vorhanden sind. Irgendwie muß man dieses Zeichen doch ersetzen können.
tr '\342' '\255' < macfile.txt > unixfile.txt
tr '\342' '\255' < test2.txt > unixfile.txt funktioniert nicht. > Vermutlich weil das zu ersetzende Zeichen nicht das ist, das ich verändern möchte.
Wie finde ich den ASCII-Wert des von vi angezeigten Zeichens raus bzw. wie kann ich diese Zeichen nach dem Schema ":%s/Suchen_nach/Ersetzen_durch/" durch nichts ersetzen?
Mit "hex" kannst du dir die Datei im Hexadezimalformat mit zusätzlicher ASCII-Anzeige anschauen. Dann nur noch die ungültigen Zeichen finden und nach Oktal umwandeln. Mittels tr -d '\255\344\254' < mac.file > neu.file werden dann die Zeichen \255, \344 und \254 gelöscht. Und dann versuch mal "more" zum Anzeigen der Datei, könnte schneller sein. Viele Grüße Ralf
Am Sonntag, 2. November 2003 17:31 schrieb Ralf Schuchardt:
Mit "hex" kannst du dir die Datei im Hexadezimalformat mit zusätzlicher ASCII-Anzeige anschauen. Dann nur noch die ungültigen Zeichen finden und nach Oktal umwandeln.
Auch nicht ganz leicht, da man mit hex die Sonderzeichen nicht gut sieht. Mit welchem Programm kann man hex in oktal umwandeln? Ich möchte mal mit tr versuchen hex 96 nach hex 20 umzuwandeln, um zu sehen, ob ich mit tr überhaupt weiter komme.
Und dann versuch mal "more" zum Anzeigen der Datei, könnte schneller sein.
Das ist merklich schneller, nur zeigt more diese speziellen Sonderzeichen nicht an. Ich hätte mir nicht gedacht, dass "suchen und ersetzen" so schwierig sein kann :-) Al
Hallo, Am Sun, 02 Nov 2003, Al Bogner schrieb:
Am Sonntag, 2. November 2003 17:31 schrieb Ralf Schuchardt:
Mit "hex" kannst du dir die Datei im Hexadezimalformat mit zusätzlicher ASCII-Anzeige anschauen. Dann nur noch die ungültigen Zeichen finden und nach Oktal umwandeln.
Auch nicht ganz leicht, da man mit hex die Sonderzeichen nicht gut sieht. Mit welchem Programm kann man hex in oktal umwandeln?
z.B. mit bc ibase=16; obase=8. Einfacher ist, wenn du nicht 'hex' verwendest, sondern dir das gleich oktal anzeigen laesst: od -c < macfile.txt od -o < macfile.txt
Ich möchte mal mit tr versuchen hex 96 nach hex 20 umzuwandeln, um zu sehen, ob ich mit tr überhaupt weiter komme.
tr '\226' ' ' -dnh -- I read [.doc files] with 'rm.' All you lose is the Microsoft-specific font selections, the macro viruses and the luser babblings. --Gary `Wolf' Barnes
On Sunday 02 November 2003 20:51, Al Bogner wrote:
Am Sonntag, 2. November 2003 17:31 schrieb Ralf Schuchardt:
Mit "hex" kannst du dir die Datei im Hexadezimalformat mit zusätzlicher ASCII-Anzeige anschauen. Dann nur noch die ungültigen Zeichen finden und nach Oktal umwandeln.
Auch nicht ganz leicht, da man mit hex die Sonderzeichen nicht gut sieht. Mit welchem Programm kann man hex in oktal umwandeln? [...]
Probier mal khexedit, das kann zudem noch Zeichen ersetzen. Ciao
Am Sonntag, 2. November 2003 11:45 schrieb Al Bogner:
Mit welchem Editor und wie ersetze ich nun remote diese "inversen 226" und was wird für ein Zeichen anstatt wird vorgeschlagen?
Ich habe mir nun mit less die Datei angesehen, die mit mysqldump erstellt wird. Da findet sich mit less nicht nur 226, sondern auch 206, 222, 223, 224 und 225 und was ich noch nicht gesehen habe :-). Wobei allerdings der dazugehörige ASCII-Wert nicht zum Text passt. Mit vi sieht man dort in blau ~U ~F ~R ~V ~S ~J ~K. Zum Teil sollten dort Anführungszeichn sein, die aber auch weggelassen werden können. Ich denke am einfachsten ist es, wenn ich diese Zeichen einfach komplett entferne. Aber wie? Gibt es eine Möglichkeit zB alle Zeichen ab ASCII x durch nichts zu ersetzen? Al
participants (7)
-
Al Bogner
-
David Haller
-
Kai Lindenberg
-
Maik Holtkamp
-
Michael 'Mike' Jansen
-
Ralf Schuchardt
-
Sebastian Huber