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=0
para 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=1
para 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
-
-n
Diga 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.
-