Классический случай того, что вы можете сделать с помощью 'sed':
sed -n '/^!--- Marker two --!/,/^!--- Marker three --!/{
/^!--- Marker three --!/d;p;}' \
infile > outfile
Единственная ошибка, если первый маркер появляется в данных более одного раза.Шаблоны соответствуют началу раздела и началу следующего раздела;команды в фигурных скобках удаляют строку для начала второго раздела и печатают все остальные строки.
Вы также можете обработать несколько таких шаблонов для разделения файлов с помощью команды 'w' (слегка отличающаяся схема соответствия- но может быть адаптирован к приведенному выше, если это необходимо):
sed -n -e '/!--- Marker one --!/,/!--- Marker two --!/w file1' \
-e '/!--- Marker three --!/,/!--- Marker four --!/w file2' infile
И т. д.