Como você solicitou originalmente uma solução sed
, eu adiciono uma:
sed '/./{H;1h;$! d}
g;/{p}$/d
s#^{p}.*#&\n{/p}#;p
s/.*/{p}/;h;d' somefile.txt
Explicação
- linha 1: Anexe linhas não vazias ao buffer de suspensão (1ª linha copiada em vez de anexada para evitar começar com nova linha). Continue para linhas vazias ou fim do arquivo.
- linha 2: Ignore os buffers sem texto para manipular várias linhas vazias ou linhas vazias no final do buffer
- linha 3: se houver uma tag de abertura, adicione uma tag de fechamento. Em seguida, imprima.
- linha 4: preencha o buffer de retenção com uma nova tag de abertura.