Конвертация файла с окончаниями строк DOS в формат Unix и обратно

Системы, основанные на ASCII или совместимом наборе символов, используют или LF (от англ. Line feed - перевод строки, 0x0A) или CR (от англ. Carriage Return - возврат каретки, как было в пишущих машинках, 0x0D) по отдельности, или связку CRLF.

Соответственно, формат окончания строк у таких файлов различен и использование несовместимого формата (например, если конфигурационный файл или cgi-скрипт был отредактирован в текстовом редакторе под windows) может привести к различным проблемам, таким, как отказ работы программы с этим файлом или ненахождение пути к интерпретатору (в CGI-скриптах).



Для решения этой проблемы файл возможно перекодировать следующей командой на perl

Из формата окончания строк DOS (CR + LF) в формат окончаний строк UNIX (LF):

perl -pi -e 's/\r\n/\n/;' filename.txt

Обратно из формата переноса строк UNIX (LF) в формат DOS (CR + LF):

perl -pi -e 's/\n/\r\n/;' filename.txt

Можно указывать маску, то есть несколько файлов вместо имени файла, например, *.txt

Подробнее о том, откуда взялись эти различия, - в статье http://ru.wikipedia.org/wiki/Перевод_строки