Символ '^ M' в конце строки - PullRequest
94 голосов
/ 15 сентября 2008

Когда я запускаю определенный сценарий SQL в среде Unix, я вижу символ «^ M» в конце каждой строки сценария SQL, когда он отображается в командной строке. Я не знаю, на какой ОС изначально был создан скрипт SQL.

Что вызывает это и как я могу это исправить?

Ответы [ 16 ]

3 голосов
/ 18 июля 2013

Альтернативой команде dos2unix будет использование стандартных утилит, таких как sed.

Например, DOS для Unix:

sed 's/\r$//' dos.txt > unix.txt

unix to dos:

sed 's/$/\r/' unix.txt > dos.txt
1 голос
/ 04 июня 2014

Преобразование концов строк DOS / Windows (\ r \ n) в окончания строк Unix (\ n), с tr:

tr '\r\n' '\n' < dosFile.txt > unixFile.txt

Пост о замене перевода строки из командной строки Unix

1 голос
/ 07 февраля 2014

Вы можете удалить ^ M из файлов напрямую с помощью команды sed, например ::

sed -i'.bak' s/\r//g *.*

Если вас устраивают изменения, удалите файлы .bak:

rm -v *.bak
0 голосов
/ 07 марта 2013

В Perl, если вы не хотите устанавливать переменную $ / и использовать chomp (), вы также можете сделать:

$var =~ /\r\n//g;

Мои два цента

0 голосов
/ 15 сентября 2008

od -a $file полезен для изучения вопросов такого типа в Linux (аналогично dumphex выше).

0 голосов
/ 15 сентября 2008

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

...