Em awk
, algo assim:
awk '/====/ { t = ""; next } { t = t $0 "\n"; } END { printf "%s", t; }' < sample.txt
Armazena as linhas de entrada em t
e limpa t
quando vê ====
. O que já está lá é impresso no final.
Note que
- O
====
não precisa estar em uma linha própria (estritamente falando, você não disse que deveria ser). Se você quiser apenas reconhecê-lo quando for a única coisa em uma linha, use /^====$/
.
- Isso imprime toda a entrada se
====
não for visto. Verificando se há pelo menos um precisa de uma condição extra, veja abaixo.
- Sua saída de amostra está sem a primeira linha vazia após o
====
, mas isso pode ser apenas a formatação da postagem. Se você quiser removê-lo, adicione um canal a sed 1d
.
Outra versão que só começa a armazenar a entrada depois que o separador ====
é visto, produzindo efetivamente uma saída vazia se a entrada não contiver o separador:
awk '/====/ { any = 1; t = ""; next } any { t = t $0 "\n"; } END { printf "%s", t; }' < sample.txt