Usando o awk
$ awk '/^$/{f=0} f{print} /Name,Color,Size/{f=1}' file
John,Blue,M
Max,Red,S
Como funciona
O script awk tem uma variável, f , que serve como um sinalizador para identificar quando estamos dentro de um bloco Name,Color,Size .
-
/^$/{f=0}Em uma linha em branco, defina
f=0para sinalizar que estamos fora do blocoName,Color,Size. -
f{print}Quando estivermos no bloco,
f==1, imprima a linha. -
/Name,Color,Size/{f=1}Quando chegarmos ao cabeçalho
Name,Color,Size, definaf=1para sinalizar que estamos no bloco.
Usando o GNU sed
$ sed -n '/Name,Color,Size/{:a; n; /./{p; ba;}}' file
John,Blue,M
Max,Red,S
Como funciona
-
-nDiga ao sed para não imprimir nada, a menos que seja explicitamente solicitado.
-
/Name,Color,Size/{...}Se a linha contiver o cabeçalho
Name,Color,Size, execute os comandos nas chaves:-
:a;Isso define um rótulo
a. -
n;Isto lê a próxima linha.
-
/./{p; ba;}Se esta próxima linha não estiver em branco, imprima-a (
p) e ramifique (b) de volta ao rótuloa.
Desta forma, todas as linhas dentro do bloco serão lidas e impressas e a impressão será interrompida com a primeira linha vazia.
-