Para o primeiro startStr
… endStr
, contém /bbb/
ocorrência:
sed -n '/startStr/ {:n; N; /endStr/ {/\n[^\n]*bbb[^\n]*\n/ {p; q}; b}; bn}'
ou
sed -n '/startStr/ {:n; N; /endStr/ {/\nbbb\n/ {p; q}; b}; bn}'
if bbb
não é uma expressão regular e é exatamente uma string que você precisa (do começo ao \n
).
Explicação
Para o endereço /startStr/
we:
- definir rótulo
:n
; - leia a próxima linha com
N
; - verifique se corresponde a
/endStr/
;- se for verdade, verifique
/\nbbb\n/
ocorrência neste bloco que lemos;- se estiver presente, faça
{p; q}
para «imprimir e sair», - caso contrário, faça
b
para «lançar este bloco e começar a procurar na próxima»;
- se estiver presente, faça
- se for verdade, verifique
- se não for o fim do bloco, passamos para
:n
, ou seja, continuamos lendo.