bash и ^M (перевод строки в Linux).
Ещё одна тривиальная задача, но, как выяснилось, не всем известно её решение. Итак, сегодня мы поговорим о переводе строки в Linux. Есть *nix, на который мы wget-ом, например, вытащили текстовик (конфигурационный файл, скрипт…), созданный на компьютере под управлением Windows. Дело в том, что в Windows системах перенос строки обозначается двумя символами — CR и LF, а в Linux-е только CR (возврат каретки).Соответственно, файл в терминале будет выглядеть примерно так:
Вот эти ^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]
Оба варианта работоспособны полностью, но я предпочитаю второй, так как он оставляет нетронутым оригинальный файл на случай, если что-то пойдёт не так.
Спасибо, очень помогли…
Спасибо! Работает.
Ок, спасибо за подсказку col -b пришлось кстати