Удалить раздел из файла в зависимости от его содержимого

Как удалить раздел конфигурации, содержащий config B2в следующем файле с помощью bash? Любое быстрое решение с использованием sed или же awkили похожие? Если это помогает, разные разделы разделяются пустой строкой.

Входной файл:

      section X
    config A1
    config A2
    config A3

section Y
    config A1
    config B2
    config A3

section Z
    config C1
    config C2
    config A3

Ожидаемый выходной файл:

      section X
    option A1
    option A2
    option A3

section Z
    option C1
    option C2
    option C3

1 ответ

Решение

С awk:

      awk 'BEGIN { RS="section" } $0 !~ /config B2/ { print RS$0 }' file

Установите разделитель записей на «раздел» в начальном блоке. Затем, когда запись не содержит «config B2», выведите разделитель записей, за которым следует запись.

Другие вопросы по тегам