Если вы делаете hexdump -C badfileи видите, 0x0d 0x0a"\r\n"что это ваша проблема.
Измир Рамирес
Ответы:
1075
dos2unix - это утилита командной строки, которая сделает это, или :%s/^M//g, если вы используете Ctrl-, vCtrl- mдля ввода ^ M, или вы можете, :set ff=unixи vim сделает это за вас.
С другой стороны, если вы часто перемещаете файлы назад и вперед, вы, возможно, не захотите их преобразовывать, а скорее сделаете это :set ff=dos, поэтому vim будет знать, что это файл DOS, и будет использовать соглашения DOS для окончаний строк.
Большое спасибо. Я попробовал vi + ': wq ++ ff = unix' <filepath> для такого ленивого, как я.
a_secenthusiast
2
Это должен быть самый решительный ответ. :w +ff=unixэто намного приятнее, чем большинство других вещей, написанных здесь, и скрипт bash является хорошим бонусом.
mkasberg
Эти :eкоманды не появляются , чтобы сделать что - нибудь на моем Windows , VIM установки. Мой взгляд все еще показывает ^Mкоды.
Грант Бирчмайер
160
Я обычно использую
:%s/\r/\r/g
который кажется немного странным, но работает из-за способа, которым vim соответствует переводам строки. Мне тоже легче запомнить :)
Это работает последовательно на разных платформах. Лучший ответ здесь.
thebigjc
4
У меня никогда не было проблем с этим :set ff=unixраньше, но файл, который я открыл сегодня, должен быть особенно странным. Вим сказала, что это уже было, fileformat=unixно все окончания строки были ^M. Это решение сработало для меня.
Крис Б
15
Это решение добавляет ненужные мне дополнительные строки, удваивая количество строк в файле. :%s/\r//gвместо этого работает для меня.
Виктор Заманян
3
Виктор, твои файлы, скорее всего, имеют \ r \ n окончания. \ r не читается как новая строка, но \ n есть. В файлах, с которыми я сталкиваюсь, есть \ r, и вы должны добавить символ новой строки.
Joeyjoejoejr
2
@ VictorZamanian's :%s/\r//g- единственное решение общего назначения, особенно для файлов смешанного режима, содержащих неоднородную смесь строк перевода в стиле DOS и UNIX. Канонические решения (например, :set ff=unix, :e ++ff=unix) принимают на себя каждую строку конца текущего буфера в том же стиле новой строки. Иногда они делают; иногда они этого не делают. Кий грустный.
Сесил Карри
97
Я предпочитаю использовать следующую команду:
:set fileformat=unix
Вы также можете использовать macили dosдля преобразования вашего файла в формат Macintosh или MS-DOS / MS-Windows. И это ничего не делает, если файл уже в правильном формате.
Для получения дополнительной информации см. Справку vim:
+1 за указание на официальный сайт документации. Для тех, кто использует вышеуказанную ссылку, см. Раздел «Преобразование текущего файла» на этой странице.
Жестянщик
Этот + vim -b <имя_файла> работал как талисман, спасибо, +1
Ян Молак
10
Конвертировать каталог файлов из DOS в Unix
Используя командную строку и sed, найдите все файлы в текущем каталоге с расширением «.ext» и удалите все «^ M»
Следующие шаги могут преобразовать формат файла для DOS в Unix:
:e ++ff=dos Edit file again, using dos file format ('fileformats' is ignored).[A 1]
:setlocal ff=unix This buffer will use LF-only line endings when written.[A 2]
:w Write buffer using unix (LF-only) line endings.
Комментарий о появлении ^ M - вот что сработало для меня. Просто набрав "^ M" в моем vi ничего не получилось (не найдено). Последовательность CTRL+ VCTRL+ Mсделала это отлично, хотя.
Вы можете использовать :%sвместо :1,$s. %это сокращение для 1,$.
Жестянщик
5
Я нашел очень простой способ: открыть файл с помощью Nano: nano file.txt
Нажмите CTRL+ Oдля сохранения, но перед нажатием Enterнажмите: ALT+ Dдля переключения между окончаниями строк DOS и Unix / Linux или: ALT+ Mдля переключения между окончаниями Mac и Unix / Linux, затем нажмите Enterдля сохранения и CTRL+ Xдля выхода.
Сделано это на сервере Linux, файл имел ^Mокончания. сохранить как DOS, чтобы сохранить, сохранить как Linux для удаления. можно проверить с помощьюcat -v
HattrickNZ
Этот вопрос касается vim, а не нано.
Грант Бирчмайер
5
:g/Ctrl-v Ctrl-m/s///
CtrlMсимвол \rили возврат каретки, которые добавляют окончания строки DOS. CtrlVговорит vim вставить литералCtrlM символ в командной строке.
Взятая в целом, эта команда заменяет все \rничем, удаляя их с концов строк.
Это передаст содержимое вашего текущего буфера в команду dos2unix и запишет результаты поверх текущего содержимого. Vim попросит перезагрузить файл после
Обычно есть dos2unixкоманда, которую вы можете использовать для этого, просто убедитесь, что вы прочитали руководство, так как версии GNU и BSD отличаются тем, как они работают с аргументами.
если вы создадите файл в NotePad или NotePad ++ в Windows и перенесете его в Linux и откроете его с помощью vim, вы увидите ^ M в конце каждой строки. Чтобы удалить это,
hexdump -C badfile
и видите,0x0d 0x0a
"\r\n"
что это ваша проблема.Ответы:
dos2unix - это утилита командной строки, которая сделает это, или
:%s/^M//g
, если вы используете Ctrl-, v Ctrl- mдля ввода ^ M, или вы можете,:set ff=unix
и vim сделает это за вас.Документы по настройке 'fileformat' находятся здесь , и на vim wiki есть исчерпывающая страница о конверсиях, заканчивающихся строкой .
С другой стороны, если вы часто перемещаете файлы назад и вперед, вы, возможно, не захотите их преобразовывать, а скорее сделаете это
:set ff=dos
, поэтому vim будет знать, что это файл DOS, и будет использовать соглашения DOS для окончаний строк.источник
:%s/^M//g
должно быть:%s/\r//g
, потому что^M
просто означает «совпадать с заглавной буквы« М »в начале строки».:%s/\r//g
сработало для меня, ура @Bunykset ff=unix
что ничего не делает. Может быть, он преобразует файл, но все^M
символы все еще там.Измените окончания строк в представлении:
Это также может быть использовано как операция сохранения (: w не будет сохранять с использованием концов строк, которые вы видите на экране):
И вы можете использовать его из командной строки:
источник
:w +ff=unix
это намного приятнее, чем большинство других вещей, написанных здесь, и скрипт bash является хорошим бонусом.:e
команды не появляются , чтобы сделать что - нибудь на моем Windows , VIM установки. Мой взгляд все еще показывает^M
коды.Я обычно использую
который кажется немного странным, но работает из-за способа, которым vim соответствует переводам строки. Мне тоже легче запомнить :)
источник
:set ff=unix
раньше, но файл, который я открыл сегодня, должен быть особенно странным. Вим сказала, что это уже было,fileformat=unix
но все окончания строки были^M
. Это решение сработало для меня.:%s/\r//g
вместо этого работает для меня.:%s/\r//g
- единственное решение общего назначения, особенно для файлов смешанного режима, содержащих неоднородную смесь строк перевода в стиле DOS и UNIX. Канонические решения (например,:set ff=unix
,:e ++ff=unix
) принимают на себя каждую строку конца текущего буфера в том же стиле новой строки. Иногда они делают; иногда они этого не делают. Кий грустный.Я предпочитаю использовать следующую команду:
Вы также можете использовать
mac
илиdos
для преобразования вашего файла в формат Macintosh или MS-DOS / MS-Windows. И это ничего не делает, если файл уже в правильном формате.Для получения дополнительной информации см. Справку vim:
источник
^M
символы.set fileformat=unix
в мой файл .vimrc сработало.:set fileformat=unix
конвертировать из DOS в Unix.источник
В Vim это удаляет все возвраты каретки и оставляет только новые строки.
источник
:%s/\r//g
это работало как шарм.от: http://vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix
[Esc]:% s / \ r $ //
источник
Конвертировать каталог файлов из DOS в Unix
Используя командную строку и sed, найдите все файлы в текущем каталоге с расширением «.ext» и удалите все «^ M»
@ https://gist.github.com/sparkida/7773170
также, как упомянуто выше ^ M = Ctrl+V+ Ctrl+M(не просто введите символ каретки "^" и M)
источник
dos2unix
может напрямую изменять содержимое файла.Вы можете напрямую использовать его в файле, без необходимости временного перенаправления файлов.
Выше используется предполагаемая клавиатура США. Используйте
-
опцию 437 для использования клавиатуры Великобритании.источник
(см .: http://kb.iu.edu/data/acux.html )
источник
Следующие шаги могут преобразовать формат файла для DOS в Unix:
Ссылка: http://vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix
источник
С помощью следующей команды:
Получить,
^M
чтобы появиться тип CtrlVтогда CtrlM. CtrlVговорит Vim принять следующий буквально введенный символ.источник
Комментарий о появлении ^ M - вот что сработало для меня. Просто набрав "^ M" в моем vi ничего не получилось (не найдено). Последовательность CTRL+ V CTRL+ Mсделала это отлично, хотя.
Моя рабочая команда замещения была
и это выглядело так на моем экране:
источник
:%s
вместо:1,$s
.%
это сокращение для1,$
.Я нашел очень простой способ: открыть файл с помощью Nano:
nano file.txt
Нажмите CTRL+ Oдля сохранения, но перед нажатием Enterнажмите: ALT+ Dдля переключения между окончаниями строк DOS и Unix / Linux или: ALT+ Mдля переключения между окончаниями Mac и Unix / Linux, затем нажмите Enterдля сохранения и CTRL+ Xдля выхода.
источник
^M
окончания. сохранить как DOS, чтобы сохранить, сохранить как Linux для удаления. можно проверить с помощьюcat -v
CtrlMсимвол
\r
или возврат каретки, которые добавляют окончания строки DOS. CtrlVговорит vim вставить литералCtrlM символ в командной строке.Взятая в целом, эта команда заменяет все
\r
ничем, удаляя их с концов строк.источник
Ты можешь использовать:
или
dos2unix utility
.источник
Вы можете использовать следующую команду:
:%s/^V^M//g
где '^' означает использовать CTRLключ.
источник
Команда ниже используется для переформатирования всех файлов .sh в текущем каталоге, я проверял это на моей ОС Fedora.
источник
В vim введите:
Это передаст содержимое вашего текущего буфера в команду dos2unix и запишет результаты поверх текущего содержимого. Vim попросит перезагрузить файл после
источник
Чтобы запустить непосредственно в консоли Linux:
vim file.txt +"set ff=unix" +wq
источник
Обычно есть
dos2unix
команда, которую вы можете использовать для этого, просто убедитесь, что вы прочитали руководство, так как версии GNU и BSD отличаются тем, как они работают с аргументами.Версия BSD:
Версия GNU:
Кроме того, вы можете создать свой собственный
dos2unix
с любым из предложенных ответов, например:источник
Я знал, что видел это где-то. Вот совет по входу в FreeBSD:
Нужно удалить все эти символы ^ M из файла DOS? Пытаться
источник
Хотя эта тема очень старая, я хотел бы добавить еще один материал из Викия:
В этой строке найдите все знаки возврата каретки (одно и более повторений) до конца строки и удалите, так что просто
\n
останетесь на eol.источник
Это мой путь. Я открыл файл в DOS EOL и при сохранении файла, который будет автоматически преобразован в Unix EOL
источник
если вы создадите файл в NotePad или NotePad ++ в Windows и перенесете его в Linux и откроете его с помощью vim, вы увидите ^ M в конце каждой строки. Чтобы удалить это,
На вашем терминале Linux введите
Это сделает необходимую магию.
источник
Я хотел новые строки вместо ^ M. Perl на помощь:
Или написать в стандартный вывод:
источник