Tente isto:
awk '/^[*][*][*] /{ if ($0 in seen) fname=$0; else seen[$0];} fname{print>fname}' file
Como funciona
o awk lê implicitamente um arquivo linha por linha. Para cada linha lida, fazemos o seguinte:
-
/^[*][*][*] /{ if ($0 in seen) fname=$0; else seen[$0];}Para qualquer linha que comece com três estrelas e um espaço, verificamos se já vimos essa linha antes. Se tivermos, definimos
fnamepara essa linha. Caso contrário, atualizamos a matriz associativaseenpara indicar que vimos essa linha uma vez. -
fname{print>fname}Se
fnamefor um valor não vazio, escreva a linha atual no arquivo chamadofname.