Удалить раздел из файла в зависимости от его содержимого
Как удалить раздел конфигурации, содержащий
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», выведите разделитель записей, за которым следует запись.