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
fname
para essa linha. Caso contrário, atualizamos a matriz associativaseen
para indicar que vimos essa linha uma vez. -
fname{print>fname}
Se
fname
for um valor não vazio, escreva a linha atual no arquivo chamadofname
.