Se você quiser editar o texto definido por um idioma livre de contexto (tags de início e de finalização correspondentes aninhadas, Por exemplo, HTML ou XML), você deve usar uma ferramenta criada para isso em vez de uma ferramenta para expressões regulares .
Tal ferramenta é, por exemplo, sgrep (disponível como um pacote para muitas distribuições linux) : Você pode combinar regiões (aninhadas) definidas por tags iniciais e finais e manipulá-las. Então, por exemplo
sgrep -o '%r\n' '(start .. end) extracting ("<?php".."?>" containing "###=CACHE START=###")'
removerá qualquer região que comece com <?php
e termine com ?>
que contenha ###=CACHE START=###
do seu arquivo, imprimindo todas as outras regiões separadas por uma nova linha. As novas linhas e o espaço em branco não são considerados relevantes para correspondência, portanto, as correspondências multilinhas são gratuitas.