bash и ^M (перевод строки в Linux).

Ещё одна тривиальная задача, но, как выяснилось, не всем известно её решение. Итак, сегодня мы поговорим о переводе строки в Linux. Есть *nix, на который мы wget-ом, например, вытащили текстовик (конфигурационный файл, скрипт…), созданный на компьютере под управлением Windows. Дело в том, что в Windows системах перенос строки обозначается двумя символами — CR и LF, а в Linux-е только CR (возврат каретки).Соответственно, файл в терминале будет выглядеть примерно так:

ctrl-m

Вот эти ^M в конце каждой строки — это и есть лишний символ, доставшийся нам от Windows. В случае с CSS — ничего страшного не случится, но если это стартовый скрипт, например, из статьи про SSHGuard — работать он не будет. Для того, чтобы исправить ситуацию существует множество решений, конечно, но с моей точки зрения есть два наиболее изящных. Первое решение подойдёт тем, у кого на Linux-машине установлен интерпретатор Perl. Вот он:

[cc lang=»perl»]

perl -pi -e ‘s/\r\n/\n/;’ filename

[/cc]

Второй же вариант реализуется исключительно средствами командной оболочки bash:

[cc lang=»bash»]

cat filename.in | col -b > filename.out

[/cc]

Оба варианта работоспособны полностью, но я предпочитаю второй, так как он оставляет нетронутым оригинальный файл на случай, если что-то пойдёт не так.

Помогла заметка - поделись с другом:
    • Алексей
    • 2 августа, 2018

    Спасибо, очень помогли…

    • Guest
    • 15 июня, 2018

    Спасибо! Работает.

    • mikhail
    • 23 января, 2016

    Ок, спасибо за подсказку col -b пришлось кстати

  1. 28 октября, 2014

Оставьте эти два поля как есть:

 
Яндекс.Метрика
Array ( [path] => /var/sites/homeless.su/www/wp-content/uploads/2023/06 [url] => https://www.homeless.su/wp-content/uploads/2023/06 [subdir] => /2023/06 [basedir] => /var/sites/homeless.su/www/wp-content/uploads [baseurl] => https://www.homeless.su/wp-content/uploads [error] => )