Как известно, перевод строки в текстовых файлах может быть представлен различными символами, из которых сами популярные варианты это:
- LF (Unix)
- CR+LF (Windows)
Более подробное описание и историю можно почитать, например, в Википедии. С практической же точки зрения эти различия приводят к тому, что файлы могут интерпретироваться неправильно при переносе между платформами. Например, так выглядит текстовый файл с юниксовыми переводами строк в Блокноте Windows:
Проблема актуальна для всех видов текстовых файлов – как обычных TXT, так и программного кода C, HTML, PHP и т.д.
Разовую замену переводов строк в небольшом числе файле можно сделать, например, в программе Notepad++.
При большом количестве текстовых файлов и при необходимости обработки в командной строке удобно использовать бесплатную программу nhrt, которая может заменить переводы строк в командной строке и bat файле, при этом предназначена для использования в командной строке и пакетных файлах, а также поддерживает маски файлов и подкаталоги.
Замена переводов строки Unix на Windows
Для этого преобразования необходимо задать замену символа LF на последовательность CR LF командой:
nhrt -set:"\n" -et:"\r\n" NEWS.txt
После выполнения команды обновлённый файл NEWS.txt нормально открывается в Блокноте Windows:
Команда для замены LF на CR LF для всех PHP файлов, включая подкаталоги:
nhrt -set:"\n" -et:"\r\n" -r *.php
Замена переводов строки Windows на Unix
Для этого преобразования необходимо задать замену последовательности CR LF на символ LF командой:
nhrt -set:"\n" -et:"\r\n" NEWS.txt
Команда для замены CR LF на LF для всех PHP файлов, включая подкаталоги:
nhrt -set:"\n" -et:"\r\n" -r *.php
Узнать больше
Параметр -set, -searchescapetext задает поиск простого текста (plain text) с поддержкой escape последовательностей.
Параметр -et, -escapetext задает заменяющий текст с поддержкой escape последовательностей.