Так что мне нужно не жадное сопоставление с регулярным выражением.
Не совсем.Предполагая, что теги <pre>
и </pre>
всегда находятся на одной строке, нет комментариев или других тегов HTML, и вам не нужно беспокоиться об удалении сущностей HTML, вы можете использовать, например,
<code>perl -ne 'print unless m{^\s*<pre\b} .. m{^\s*
} '
Но лучше использовать настоящий анализатор HTML:
perl -MHTML::Parser -e 'HTML::Parser->new(ignore_elements => ["pre"], default_h => [sub { print @_ }, "text"])->parse_file(*STDIN)' < input.html
(детали зависят от того, что именно вы хотите сделать с остальной частью документа.)