Приветствую сообщество!Стоит задача выудить из текста, состоящего из блоков вида
BEGIN some label
some text
...
END
только блоки, содержащие между строками BEGIN/END определённые строки, которые можно определить регулярным выражением. К примеру, начинающиеся с определённого слова. В идеале хотелось бы ещё вырезать строки между началом каждого блока и первой ключевой строкой.
Представляю, как это сделать на perl или, скажем, на C. Но очень хотелось бы иметь это в виде одно-двухстрочного скрипта с использованием grep/sed/awk/etc. В виду недостаточного знания перечисленных инструментов, не могу понять, возможно ли это и если да, то чем проще сделать. А читать всю документацию по всем этим инструментам сейчас нет времени. Так что если кто-нибудь навскидку может сказать, как примерно это сделать (или, например, что сделать это таким путём невозможно), буду премного благодарен.
Для наглядности приведу пример входных и выходных данных. Признаком ключевой строки будем считать 'WORD' в начале такой строки. Итак, имея на входе:
BEGIN something 1
some text 1
...
ENDBEGIN something 2
WORD some text 2
...
WORD some text 3
END
BEGIN something 3
some text 4
...
END
BEGIN
some text 5
...
WORD some text 6
...
END
BEGIN
...
END
На выходе нужно получить:
BEGIN something 2
WORD some text 2
...
WORD some text 3
ENDBEGIN
WORD some text 6
...
END