Как преобразовать окончания строк из 0D0A в 0A и наоборот |
![]() |
Добавил(а) microsin |
Текстовые файлы DOS/Windows традиционно завершают строки парой специальных символов 0x0D Carriage Return (CR, возврат каретки, \r) 0x0A Line Feed (LF, перевод строки, \n). Текстовые файлы Unix/Linux завершают строки одним символом 0x0A. Чтобы преобразовать текстовые файлы между форматами строк DOS и Unix проще всего использовать специальную утилиту dos2unix [2]. Кроме того, существуют также и другие способы преобразования [1]. Вы можете использовать следующие инструменты: • dos2unix (эта утилита также известна как fromdos) – преобразует текст из формата DOS в формат Unix. [dos2unix/unix2dos] 0D0A -> 0A. Следующая команда преобразит файл myfile.txt из формата DOS в формат Unix: $ dos2unix myfile.txt
Эта команда перезапишет исходный файл myfile.txt. Если нужно сохранить исходный файл, чтобы преобразованный файл сохранился в новом файле, используйте следующую команду (здесь input.txt исходный файл, output.txt преобразованный файл): $ dos2unix -n input.txt output.txt
$ dos2unix --newfile input.txt output.txt
0A -> 0D0A. Следующая команда преобразит файл myfile.txt из формата Unix в формат DOS: $ unix2dos myfile.txt
$ unix2dos -b myfile.txt
Следующая команда Windows обработает все файлы с расширением *.txt в текущем каталоге и всех подкаталогах: for /R %G in (*.txt) do dos2unix "%G"
С помощью команды od: od -c filename
od -c myfile.txt
С помощью команды cat: cat -v /prod/apps/router.php
[Команда tr] Команда tr позволяет преобразовать файлы из формата DOS в формат Unix: tr -d '\r' < input.file > output.file
[Perl One Liner] Следующая команда позволяет преобразовать файлы из формата DOS в формат Unix: perl -pi -e 's/\r\n/\n/g' input.file
[Команда sed] Следующая команда позволяет преобразовать файлы из формата Unix в формат DOS: $ sed 's/$'"/`echo \\\r`/" input.txt > output.txt
Следующая команда удалит символы ^M и CR: # GNU/sed syntax to update file in-place
sed -i 's/\r$//g' input
# macOS/*BSD syntax to update file in-place
sed -i'.BAK' 's/\r$//g' input
sed "s/$(printf '\r')\$//" in.txt > out.txt
sed -i'BAK' "s/$(printf '\r')\$//" in.txt
Замечание: команда sed может не работать на некоторых версиях Unix/Linux. Следующая команда позволяет преобразовать файлы из формата DOS в формат Unix: $ sed 's/^M$//' input.txt > output.txt
Примечание: если Вы используете командную строку BASH shell, то для ввода специальных символов нажмите Ctrl-V и затем Ctrl-M. [Ссылки] 1. HowTo: UNIX / Linux Convert DOS Newlines CR-LF to Unix/Linux Format site:cyberciti.biz. |