Usando o awk
$ awk '/}/{next;} /Name:/{print;n=NR+10} NR>n' file
Name: john
Apple
orange
grape
pine
Name: Ruben
grape
zebra
donkey
Name: Tom
Tiger
red
blue
orange
tomato
cat
Como funciona
-
/}/{next;}
Ignorar qualquer linha que contenha
}
. -
/Name:/{print;n=NR+10}
Quando chegarmos a uma linha contendo
Name:
, imprima-a e, para sabermos quando começar a imprimir novamente, definan
para 10 mais o número da linha atual. -
NR>n
Se o número da linha atual for maior que
n
, faça a ação padrão: imprima a linha.
Usando sed
Com uma lógica muito semelhante:
$ sed -e '/}/d' -e '/Name:/{p;N;N;N;N;N;N;N;N;N;N;d;}' file
Name: john
Apple
orange
grape
pine
Name: Ruben
grape
zebra
donkey
Name: Tom
Tiger
red
blue
orange
tomato
cat
Como funciona
-
/}/d
Exclua qualquer linha contendo
}
. -
/Name:/{p;N;N;N;N;N;N;N;N;N;N;d;}
Se encontrarmos uma linha contendo
Name:
, imprima-a, leia as próximas 10 linhas e exclua-as.
As linhas que não se enquadram nas categorias acima são impressas.