klink0v (klink0v) wrote,
klink0v
klink0v

Пара упражнений с sed

В копилку знаний, просто чтобы самому потом не забыть.

Случай 1. Некая сторонняя софтина что-то передаёт нам на стандартный ввод. При этом мы заранее не знаем сколько и чего там будет. Но доподлинно известно, что в конце блока полезной информации будет обязательно присутствовать пустая строка.

Решение: sed -n '/^$/Q'

Объяснение: sed перебирает входной поток в поисках пустой строки ("^$"). Как только находит, завершает свою работу (команда "Q"). Выхлоп sed-а можно перенаправить pipe-ом в ещё какую-нибудь утилиту, где потом парсить его и всячески дерибанить. Главное, что наш скрипт не "зависнет" на этой строчке, а будет выполняться дальше, даже если на входе мы так и не дождёмся EOF-а.

Случай 2. Нам нужно выдрать некоторую информацию из комментария в конфиге стороннего демона. Заранее известно, что это строка, состоящая из 140 печатных символов (base64). Местонахождение данного комментария внутри конфига может быть любым.

Решение: sed -ne 's/^.*# *\(.\{140\}\)/\1/p' "$FILE"

Объяснение. Ключ "e" говорит перейти в режим редактирования (edit), ключ "n" - не печатать найденные совпадения шаблона без явного на то указания. Ищем по регулярному выражению "начало строки, произвольное количество символов, знак #, произвольное количество пробелов, 140 каких-нибудь символов. Последний компонент шаблона заключен в экранированные скобки, что означает группировку с целью последующего упоминания (back reference). По факту совпадения шаблона в тексте заменяем всю найденную строку на её часть, соответствующую подмножеству в скобках ("\1") и распечатываем ("/p"). Получаем искомую последовательность.

Tags: bash, hints, linux, администрирование
Subscribe

  • Трудноотлаживаемая НЁХ

    Когда что-то работает как надо — это хорошо и приятно. Когда что-то не работает от слова "совсем" — это неприятно, но по…

  • Энергоэффективная, блин, Lenovo

    — А чо у вас сервак такой тормозной? — Он не тормозной, он энергоэффективный! Мы с коллегой относимся к поколению старых

  • Недомайские псевдопраздники

    Пришло официальное электрическое письмо от наших HRов о том, что мы с 3го по 7ое мая работаем как обычно. Те, кто обязан (был) физически…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 4 comments