'^M' символ в конце строк

98
задан 2 revs, 2 users 100% 7 January 2014 в 12:30
поделиться

11 ответов

Это вызывается конечными символами строки DOS/Windows. Как сказанный Andy Whitfield, команда dos2unix Unix поможет решить проблему. Если Вы хотите больше информации, можно прочитать страницы справочника для той команды.

78
ответ дан Thomas Owens 24 November 2019 в 05:10
поделиться

Другой vi управляет, чтобы это сделало: :%s/.$// Это удаляет последний знак каждой строки в файле. Недостаток к этому поиску и команде замены состоит в том, что это не заботится, каков последний знак, так бояться называть его дважды.

-1
ответ дан Scottie T 24 November 2019 в 05:10
поделиться

od -a $file полезно для исследования тех типов вопроса на Linux (подобный dumphex в вышеупомянутом).

0
ответ дан Allan Wind 24 November 2019 в 05:10
поделиться
C:\tmp\text>dos2unix hello.txt helloUNIX.txt

Sed еще более широко доступен и может сделать такого рода вещь также, если dos2unix не установлен

C:\tmp\text>sed s/\r// hello.txt > helloUNIX.txt  

, Вы могли бы также попробовать TR:

cat hello.txt | tr -d \r > helloUNIX2.txt  

Вот результаты:

C:\tmp\text>dumphex hello.txt  
00000000h: 48 61 68 61 0D 0A 68 61 68 61 0D 0A 68 61 68 61 Haha..haha..haha  
00000010h: 0D 0A 0D 0A 68 61 68 61 0D 0A                   ....haha..  

C:\tmp\text>dumphex helloUNIX.txt  
00000000h: 48 61 68 61 0A 68 61 68 61 0A 68 61 68 61 0A 0A Haha.haha.haha..  
00000010h: 68 61 68 61 0A                                  haha.  

C:\tmp\text>dumphex helloUNIX2.txt  
00000000h: 48 61 68 61 0A 68 61 68 61 0A 68 61 68 61 0A 0A Haha.haha.haha..  
00000010h: 68 61 68 61 0A                                  haha.  
5
ответ дан Alex Bolotov 24 November 2019 в 05:10
поделиться

Сценарий SQL был первоначально создан в Windows OS. '^M' символы являются результатом Windows и Unix, имеющего различные идеи о том, что использовать для символа конца строки. Можно использовать жемчуг в командной строке для фиксации этого.

perl -pie 's/\r//g' filename.txt
8
ответ дан Bill the Lizard 24 November 2019 в 05:10
поделиться

В vi сделайте :%s/^M//g

Для получения эти ^M, содержат CTRL ключ, нажимают V тогда M (Оба при содержании клавиши CTRL), и эти ^M появится. Это найдет все случаи и ничем заменит их.

9
ответ дан Brad Mace 24 November 2019 в 05:10
поделиться

Попытайтесь использовать dos2unix для снятия изоляции с ^M.

13
ответ дан Andy Whitfield 24 November 2019 в 05:10
поделиться

Самый легкий путь состоит в том, чтобы использовать vi. <забастовка> я знаю что ужасные звуки, но его простое и уже установленный на большинстве сред UNIX. ^M является новой строкой от среды Windows/DOS.

от командной строки: $ vi filename

Тогда нажимают" :" для получения до командного режима.

Поиск и Замена все Глобально :%s/^M//g " Нажатие, и держите управление, тогда нажимают V тогда M", который ничем заменит ^M.

Затем, чтобы записать и выйти входят" :wq" Сделанный!

24
ответ дан Ionică Bizău 24 November 2019 в 05:10
поделиться

Причиной является различие между тем, как основанная ОС на базе Windows и основанная на Unix ОС хранят маркеры конца строки.

основанные на Windows операционные системы, благодаря их наследию DOS, хранят конец строки как пару символов - 0x0D0A (возврат каретки + перевод строки). Основанные на Unix операционные системы просто используют 0x0A ( перевод строки ). ^M Вы видите, визуальное представление 0x0D ( возврат каретки ).

dos2unix поможет с этим. Вероятно, также необходимо скорректировать источник сценариев, чтобы быть 'благоприятными для Unix'.

39
ответ дан Andriy M 24 November 2019 в 05:10
поделиться

Зафиксируйте окончания строки в vi путем выполнения следующего:

:set fileformat=unix

:w

74
ответ дан s g 24 November 2019 в 05:10
поделиться

^M обычно вызывается новыми строками оператора Windows и переводится на Unix, похож на ^M. Команда dos2unix должна удалить их приятно

dos2unix [опции] [-c convmode] [-o файл...] [-n infile outfile...]

7
ответ дан jW. 24 November 2019 в 05:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: