Vim в режиме автомата

Vim, в отличие от, скажем, sed — интерактивный редактор. Предполагается, что человек открывает файл и что-то там вручную правит. Но можно, оказывается, использовать vim (и даже vi) и в скриптах:

vi +5d +wq foo


Эта команда откроет файл foo, удалит 5-ю строку, сохранит и закроет. Всё, конечно же, «молча». Думаю, в некоторых bash-скриптах, где sed требует слишком сложных выражений, это свойство можно эффективно использовать.

Еще несколько слов о sed

В связи с запуском собственного jabber-бота я решил детально изучить потоковый редактор sed. С его помощью можно править тексты сравнительно короткими консольными командами, что, собственно, и позволяет делать бот. Учебников по sed в Интернете полно. Выбрал Sed — An Introduction and Tutorial by Bruce Barnett. Во-первых, потому что он обновился буквально месяц назад (sed хотя и имеет почти 40-летнюю историю, но до сих пор весьма актуален). Во-вторых, текст этот очень адекватный, с шутками-прибаутками, читается легко. В-третьих, материала в нем в самый раз. За 5 минут, конечно, не одолеешь, но и добраться до конца захода за 2-3 вполне возможно. В данном топике я хочу зафиксировать для себя почерпнутые в упомянутом учебнике знания, в форме, которая может и еще кому-нибудь из русскоязычных читателей покажется удобной.



( Читать дальше )

Головоломка в стиле sed

Редактор sed упоминался у нас неоднократно и это не удивительно. Появившись в начале 1970-х, он до сих пор актуален. Можно, например, почитать учебник по этой программе, датированный июнем 2011 года. Именно там я нашел вот такое удивительное выражение из разряда «косил косой косой косой»:

sed '/^g/s/g/s/g'


Попробуйте разобраться на досуге что это означает и вы поймете, что возможности этого потокового редактора гораздо шире, чем замена одного шаблона на другой.