Разбор этого файла с помощью pcregrep может оказаться сложной задачей. «Pcregrep» не имеет возможности разбивать файлы на логические записи. Шаблон, который был указан c, попытается найти совпадающие записи путем объединения нескольких записей вместе. Иногда включение несопоставленных записей в вывод.
Например, если ввод - «--- data = a END --- data1 = a END», то вышеуказанная команда выберет обе записи, так как это будет сформировать соответствие между начальным '---' и завершающим 'END'
Для этого типа ввода рассмотрите возможность использования AWK. Он имеет возможность читать ввод с помощью настраиваемого разделителя записей (RS), который упрощает преобразование ввода в записи и применение шаблона. При желании вы можете использовать Perl или Python.
Использование awk RS
для создания «записей», можно применить тест шаблона к каждой записи
awk -v RS='END\n' '/data1/ { print $0 }' < log1
awk -v RS='END\n' '/data1/ { print NR, $0 }' < log1
Вторая команда включает номер записи в вывод, если это полезно.
Хотя AWK не так быстр, как pcregrep, в этом случае у него не будет проблем с обработкой большого входного набора.