Espero entender isso corretamente. Esse script removerá tudo da linha que começa com o segundo *
até o final do buffer, produzindo a saída desejada do exemplo:
sed -n 'H;1h;$x;$s/\(\*[^*]*\)\n\*.*$//p'
Explicação anexar todas as linhas ( H
) ao buffer de espera. Para o último buffer de troca de linha e padrão ( $x
), você tem o arquivo inteiro como um padrão. Nesse padrão, a parte a ser mantida é definida em \(\)
e mantida ( ), enquanto tudo a partir da nova linha com
*
é excluído.
Isso se ajusta à sua descrição, mas se não se encaixar em todos os exemplos possíveis, você pode modificar o script.