Sie können verwenden tr
, um von DOS nach Unix zu konvertieren; Sie können dies jedoch nur sicher tun, wenn CR in Ihrer Datei nur als erstes Byte eines CRLF-Bytepaars angezeigt wird. Dies ist normalerweise der Fall. Sie verwenden dann:
tr -d '\015' <DOS-file >UNIX-file
Beachten Sie, dass sich der Name DOS-file
vom Namen unterscheidet UNIX-file
. Wenn Sie versuchen, denselben Namen zweimal zu verwenden, werden keine Daten in der Datei angezeigt.
Sie können es nicht umgekehrt machen (mit Standard 'tr').
Wenn Sie wissen , wie Wagenrücklauf in ein Skript ein ( control-V, control-MSteuer-M eingeben), dann gilt :
sed 's/^M$//' # DOS to Unix
sed 's/$/^M/' # Unix to DOS
wobei das '^ M' das Steuer-M-Zeichen ist. Sie können auch den bash
ANSI-C-Angebotsmechanismus verwenden, um den Wagenrücklauf anzugeben:
sed $'s/\r$//' # DOS to Unix
sed $'s/$/\r/' # Unix to DOS
Wenn Sie dies jedoch sehr oft tun müssen (grob gesagt mehr als einmal), ist es weitaus sinnvoller, die Konvertierungsprogramme (z. B. dos2unix
und unix2dos
oder oder dtou
und utod
) zu installieren und zu verwenden.
Wenn Sie ganze Verzeichnisse und Unterverzeichnisse verarbeiten müssen, können Sie Folgendes verwenden zip
:
zip -r -ll zipfile.zip somedir/
unzip zipfile.zip
Dadurch wird ein Zip-Archiv erstellt, dessen Zeilenenden von CRLF in CR geändert werden. unzip
setzt dann die konvertierten Dateien wieder ein (und fragt Sie Datei für Datei - Sie können antworten: Ja zu allen). Dank an @vmsnomad für den Hinweis.
dos2unix
Sie es einfach mit Ihrem Paketmanager. Es ist viel einfacher und auf den meisten Plattformen vorhanden.