После загрузки файла Windows на сервер Linux его невозможно прочитать. Оказывается, проблема в переносе строки.

Если скопировать файл test.txt, написанный в vim из Linux, в Windows, всё его содержимое будет отображаться на одной строке. Если скопировать файл test.txt, созданный в Windows, в Linux, программа в Linux будет работать неправильно. Если написать скрипт оболочки Linux в Windows, скопировать его в Linux и запустить, возникнут проблемы. Проблема кроется в символе переноса строки ^M!

Как удалить \r в файлах под Windows в Linux

Скопируйте файл test.txt, написанный в vim, вЕсли вы напишете скрипт оболочки Linux в Windows и скопируете его в Linux, возникнут проблемы.^M на теле!

В системах Unix каждая строка заканчивается символом «<换行>", то есть "\n";
В Windows каждая строка заканчивается на "<换行><回 车>», то есть «\n\r».
Прямым результатом является то, что при открытии файла в системе Unix в Windows весь текст станет одной строкой;
Если файл в Windows открыт в Unix, в конце каждой строки может быть дополнительный символ ^M.
Используйте vim для обработки
В командном режиме vim введите %s/^M$//g
Нажатие Enter автоматически удалит все символы ^M в файле.
Итак, что же на самом деле означает эта команда? % соответствует всему файлу, s обозначает замену, а ^M вводится с помощью Ctrl+V Ctrl+M. $ после M соответствует концу строки, а g в конце заменяет всё совпавшее содержимое в каждой строке.
Поняв значение команды, вам будет проще использовать её более гибко. Например, если вы хотите заменить все Vim-коды в файле на VIM, вы можете использовать такую команду: :%s/Vim/VIM/g.

Метод 1: :%s/^M//g

В командном режиме: введите: %s/^M//g и затем нажмите Enter, чтобы заменить
Обратите внимание, что ввод «^M» генерируется сочетаниями клавиш «Ctrl+v» и «Ctrl+M» соответственно.

Метод 2::set fileformat=unix

Открытие текстовых файлов с помощью vi
vi Имя файла для редактирования
Войти в командный режим
:set fileformat=unix
:w

Метод 3: Использование инструмента sed

Использование инструмента sed
sed 's/^M//' имя_файла > tmp_имя_файла

Метод 4: tr -d '\r'

Поскольку в символе возврата строки Windows есть лишний символ '\r', вы также можете удалить '\r', чтобы добиться следующего:
tr -d '\r'

Метод 5: команда dos2unix (наиболее часто используемый метод)

команда dos2unix:
dos2unix Имя файла для преобразования
Конвертируйте файлы напрямую в формат Unix
Описанный выше метод позволяет преобразовать файлы, отредактированные в Windows, в файлы, которые можно прочитать в Linux.

1/5 - (1 голос)

Ответить

Ваш адрес электронной почты не будет опубликован. Обязательные поля помечены *