Вы можете использовать tr
для конвертации из DOS в Unix; однако вы можете сделать это безопасно только в том случае, если CR появляется в вашем файле только в качестве первого байта пары байтов CRLF. Обычно это так. Затем вы используете:
tr -d '\015' <DOS-file >UNIX-file
Обратите внимание, что имя DOS-file
отличается от имени UNIX-file
; если вы попытаетесь использовать одно и то же имя дважды, у вас не будет данных в файле.
Вы не можете сделать это наоборот (со стандартным 'tr').
Если вы знаете, как ввести возврат каретки в сценарий ( control-V , control-M для ввода control-M), то:
sed 's/^M$//' # DOS to Unix
sed 's/$/^M/' # Unix to DOS
где '^ M' - символ элемента управления-M. Вы также можете использовать механизм bash
ANSI-C Quoting для указания возврата каретки:
sed $'s/\r$//' # DOS to Unix
sed $'s/$/\r/' # Unix to DOS
Однако, если вам придется делать это очень часто (более одного раза, грубо говоря), гораздо разумнее установить программы преобразования (например, dos2unix
и unix2dos
или, возможно, dtou
и utod
) и используйте их.