Когда я запускаю конкретный сценарий SQL в средах Unix, я вижу символ "^ M" в конце каждой строки сценария SQL, поскольку он отображается в командной строке. Я не знаю, на какой ОС изначально был создан сценарий SQL.
Это вызвано символами конца строки DOS / Windows. Как сказал Энди Уитфилд, команда dos2unix в Unix поможет решить эту проблему. Если вам нужна дополнительная информация, вы можете прочитать страницы руководства по этой команде.
Ответ 2 · рейтинг 76 · Tim Abell
Исправьте окончания строк в vi, выполнив следующее:
:set fileformat=unix
:w
Ответ 3 · рейтинг 39 · ColinYounger
Причина в различии между тем, как ОС на базе Windows и ОС на базе Unix хранят маркеры конца строки.
Операционные системы на базе Windows, благодаря их наследию DOS, хранят конец строки как пару символов - 0x0D0A (возврат каретки + перевод строки). Операционные системы на основе Unix просто используют 0x0A (перевод строки). ^M, который вы видите, является визуальным представлением 0x0D (возврата каретки).
В этом поможет dos2unix. Возможно, вам также потребуется настроить исходный код скриптов, чтобы он был "дружественным к Unix".
Ответ 4 · рейтинг 24 · Bernie Perez
Самый простой способ - использовать vi. Я знаю, что это звучит ужасно, но это просто и уже установлено в большинстве сред UNIX. ^ M - это новая строка из среды Windows / DOS.
из командной строки: $ vi filename
Затем нажмите ":", чтобы перейти в командный режим.
Искать и заменить все глобально - это :%s/^M//g "Нажмите и удерживайте элемент управления, затем нажмите V, затем M", при этом ^ M ничего не заменит.
Затем, чтобы написать и выйти, введите ":wq" Готово!
Ответ 5 · рейтинг 13 · Andy Whitfield
Попробуйте использовать dos2unix, чтобы удалить ^ M.
Ответ 6 · рейтинг 10 · dogbane
In vi, do a :%s/^M//g
Чтобы получить ^M, удерживайте клавишу CTRL, нажмите V, затем M (оба при удерживании клавиши управления), и появится ^M. Это найдет все вхождения и ничего не заменит.
Ответ 7 · рейтинг 8 · Bill the Lizard
Скрипт SQL изначально был создан в ОС Windows. Символы '^ M' являются результатом того, что Windows и Unix имели разные представления о том, что использовать для символа конца строки. Вы можете использовать perl в командной строке, чтобы исправить это.
perl -pie 's/\r//g' filename.txt
Ответ 8 · рейтинг 7 · jW.
^ M обычно вызывается оператором новой строки Windows и переводится в Unix выглядит как ^ M. Команда dos2unix должна удалить их красиво