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-filevom 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. dos2unixund unix2dosoder oder dtouund 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. unzipsetzt 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.
dos2unixSie es einfach mit Ihrem Paketmanager. Es ist viel einfacher und auf den meisten Plattformen vorhanden.