entfernen ^M aus einer csv-Datei
Ich habe ein problem, wenn ich versuche, Sie zu entfernen ^M aus einer csv -
Geben, wenn ich vim oder vi Datei.csv, bekomme ich
A, TK,2015-04-06,14.4^M,14.7,10.0,0.0,54.0^M,13.3^M,135.0^M,33.8
B, NV,2015-04-06,14.4^M,14.7,5.4,0.0,47.0^M,14.8^M,97.0^M,31.3
Ich habe versucht mit
tr -d '^M' < file.csv > file2.csv
Aber nicht entfernen, auch mit sed.
tr -d '\r' < file.csv > file2.csv
?- Ja Etan, vielen Dank, jetzt kann ich entfernen ^M
- Wie hast du das eingeben ^M ? Hast du char ^ gefolgt von char M (falsch), oder hast du Sie mit STRG-V STRG-M (richtig) ?
- Hier ist die Antwort, die du suchst stackoverflow.com/questions/811193/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie
dos2unix
Befehl vorgesehen ist, das zu tun.Verwendung von GNU/sed-just for fun :
Mit
tr
:Wo hast du diese Datei aus? Es sieht aus wie ein alt-System X-Datei von einem Mac. Die alten pre-OSX OS verwendet
<CR>
als Zeilenenden. Unix verwendet<LF>
und Windows/DOS verwendet<CRLF>
.Haben Sie dos2unix. Dieses Programm konvertiert Zeilenenden von Unix/Linux, DOS/Windows-oder System-X-Macs, um alle Formate, die Sie wollen. In der Datei, ich nehme an, Sie brauchen, um zu konvertieren der
^M
die Control Ms und nicht ein Caret-M zuNL
Zeichen.dos2unix
in Mac-Konvertierung Modus:dos2unix -c mac <filename>
Können Sie versuchen:
entfernen sollten
^M
- Folge von zwei Zeichen^
undM
^M
als\r
Charakter.perl -pE 's/(\^M|\r)//g' /var/tmp/screwed_csv_file.csv
und dann habe ich eine korrekte CSV-Datei.LOAD DATA
. Bedeutet das nicht auch eine MySQL-BUG hat? Sie sollten dokumentieren, oder behandelt werden sollte als BUG? es dauerte 4 Stunden für mich, um das herauszufinden.