Ich benötige ein Konvertierungsdienstprogramm / -skript, das eine auf dem Mac generierte SQL-Dump-Datei in eine unter Windows lesbare konvertiert. Dies ist eine Fortsetzung eines Problems, das ich hier hatte . Das Problem scheint bei der Formatierung von Zeilenumbrüchen in Textdateien zu liegen, aber ich kann kein Tool für die Konvertierung finden ...
133
Antworten:
Windows verwendet
carriage return
+line feed
für Zeilenumbruch:Unix wird nur
Line feed
für Zeilenumbrüche verwendet:Abschließend ersetzen Sie einfach jedes Vorkommen von
\n
durch\r\n
.Beide
unix2dos
unddos2unix
sind unter Mac OS X nicht standardmäßig verfügbar.Glücklicherweise können Sie einfach die Arbeit verwenden
Perl
odersed
erledigen:Code-Snippet von:
http://en.wikipedia.org/wiki/Newline#Conversion_utilities
quelle
sed
Befehl für UNIX zu DOS funktioniert unter OS X Lion nicht - er fügt nur den Text "r" am Ende jeder Zeile ein. Derperl
Befehl funktioniert jedoch.sed
, aber Sie können es umgehensed -e 's/$/^M/' inputfile > outputfile
, ohne Homebrew, gnu-sed oder unix2dos zu installieren: Verwenden Sie , wobei^M
ein Steuerzeichen in der Befehlszeile über erzeugt wirdCtrl+V Ctrl+M
.$
vor das einfache Anführungszeichen, das den Befehl sed enthält:sed $'s/\r$//'
Erläuterung: bash dekodiert Backslash-Escapezeichen in$'...'
Zeichenfolgen. Weitere Informationen finden Sie unter gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html .Dies ist eine verbesserte Version von Annes Antwort. Wenn Sie Perl verwenden, können Sie die Datei "direkt" bearbeiten, anstatt eine neue Datei zu generieren:
quelle
Can't do inplace edit on file: Permission denied.
und die Datei löschen . Schauen Sie sich stattdessen andere Dienstprogramme an.Sie können unix2dos mit Homebrew installieren
Dann können Sie dies tun:
Sie können auch dos-Dateien in Unix konvertieren:
quelle
dos2unix
. Du wirst es wollenbrew install dos2unix
.brew install unix2dos
oder gutbrew install dos2unix
funktionieren. Sie installieren das gleiche Paket. Verwenden Sie den Namen, der zu Ihnen spricht :)port install dos2unix
.Sie möchten wahrscheinlich unix2dos :
Sie können entweder
unix2dos
auf Ihrem DOS / Windows-Computer mit Cygwin oder auf Ihrem Mac mit MacPorts ausgeführt werden .quelle
tr
Löschen Sie einfach :quelle
wc -l
).tr
Befehls zum Durchführen verschiedener Konvertierungen. Verwenden Siehexdump
oder ähnliches, um genau herauszufinden, welche Art von Zeilenende-Konvention jetzt in der Datei verwendet wird.find ./ -type f -exec dos2unix {} \;
, um alle Zeilenenden im aktuellen Ordner rekursiv zu konvertierenquelle
vim
kann auch Dateien von UNIX in das DOS-Format konvertieren. Beispielsweise:quelle
Das Folgende ist ein vollständiges Skript, das auf den obigen Antworten zusammen mit der Überprüfung der Integrität basiert und unter Mac OS X funktioniert. Es sollte auch auf anderen Linux / Unix-Systemen funktionieren (obwohl dies nicht getestet wurde).
quelle
Hier ist ein wirklich einfacher Ansatz, der mit freundlicher Genehmigung von Davy Schmeits im Weblog gut funktioniert hat :
Dabei ist foo die Datei mit den Strg + M-Zeichen am Ende der Zeile und foo2 die neue Datei, die Sie erstellen.
quelle
Verwenden Sie unter Yosemite OSX den folgenden Befehl:
wo die
^M
Sequenz durch Drücken von Ctrl+ Vdann erreicht wird Enter.quelle
sed
nicht verstehen Backslash-entkommt wie\r
und `` \ n 'und kann daher auch diese in der Substitution verwenden. Sie müssen kein Literal-M eingeben, um auf dieses Zeichen (oder ein anderes) zu verweisen. Das Prinzip,sed
(und-i
) für jede Art von Konvertierung dieser Art zu verwenden, ist sehr gut, da Sie im Gegensatztr
dazu nicht auf "jeweils ein Zeichen" beschränkt sind.Erweitern Sie die Antworten von Anne und JosephH mit Perl in einem kurzen Perl-Skript, da ich zu faul bin, um den Perl-Einzeiler rechtzeitig einzugeben.
Erstellen Sie eine Datei mit dem Namen "unix2dos.pl" und legen Sie sie in einem Verzeichnis in Ihrem Pfad ab. Bearbeiten Sie die Datei so, dass sie die 2 Zeilen enthält:
Angenommen, "welches Perl" gibt "/ usr / bin / perl" auf Ihrem System zurück. Machen Sie die Datei ausführbar (chmod u + x unix2dos.pl).
Beispiel:
$ echo "hallo"> xxx
$ od -c xxx (prüft, ob die Datei mit einem nl endet)
0000000 hallo \ n
$ unix2dos.pl xxx
$ od -c xxx (prüft, ob es jetzt in cr
lf endet) 0000000 hallo \ r \ n
quelle
Öffnen / wählen Sie in Xcode 9 im linken Bereich Ihre Datei im Projektnavigator . Wenn die Datei nicht vorhanden ist, legen Sie sie in den Projektnavigator .
Auf der rechten Tafel finden Texteinstellungen und ändern Zeilenenden auf Fenster (CRLF) .
XCode-Screendump
quelle