Se a sua versão do grep for compatível com o PCRE (expressões regulares compatíveis com Perl), você poderá usar os recursos lookbehind e lookahead do Perl
grep -oPz '(?<=\HF=)(.|\n)+?(?=\)'
ou com pcregrep
(se disponível)
pcregrep -Mo '(?<=\HF=)(.|\n)+?(?=\)'
Lembre-se de que, se o seu padrão de interesse for realmente dividido por linhas, o texto retornado reterá a nova linha - talvez você queira retirá-lo com tr
ou sed
antes de usar o resultado.
Se o texto em si não puder ser dividido em linhas (somente os marcadores \HF
e \
), você poderá substituir (.|\n)+?
pelo mais simples .+?
, ou seja,
grep -oPz '(?<=\HF=).+?(?=\)'
Se mesmo o marcador \HF=
puder ser dividido em qualquer ponto por uma nova linha (conforme indicado pelo seu comentário na postagem original), será necessária uma abordagem ligeiramente diferente, pois o PCRE não suporta atualmente lookbehinds de comprimento variável. Nesse caso, você pode tentar
grep -oPz '\\n?H\n?F\n?=\K(.|\n)+?(?=\)'
onde o lookbehind é substituído por uma expressão pseudo-âncora usando \K