Программирование ARM: решение проблем, FAQ Как преобразовать окончания строк из 0D0A в 0A и наоборот Fri, December 06 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Как преобразовать окончания строк из 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.
unix2dos (эта утилита также известна как todos) – преобразует текст из формата Unix в формат DOS.
• Команда sed.
• Команда tr.
Perl one liner.

[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.
2. Dos2Unix / Unix2Dos - Text file format converters site:dos2unix.sourceforge.io.
3. LF will be replaced by CRLF in git - What is that and is it important? site:stackoverflow.com.
4. Ошибка warning: LF will be replaced by CRLF в Git как решить site:unlix.ru.
5. [Git] CRLF will be replaced by LF site:mroldan.medium.com.

 

Добавить комментарий


Защитный код
Обновить

Top of Page