com awk
:
awk '$0=="group2" {print; gr=1; next}; /^group/ {gr=0}; gr {print}' file.txt
-
$0=="group2" {print; gr=1; next}
, se a linha contiver apenasgroup2
, imprimiremos a linha, definiremos a variávelgr
para 1 (verdadeiro) e passaremos para a próxima linha -
/^group/ {gr=0}
, se a linha começar comgroup
(qualquer outro grupo), definimosgr
como 0 (false) -
gr {print}
imprime a linha quandogr
é verdadeiro. Como a ação padrão deawk
é imprimir a linha (registro), você pode fazer:awk '$0=="group2" {print; gr=1; next}; /^group/ {gr=0}; gr' file.txt
Exemplo:
$ cat file.txt
group1
data1
data2
data3
group2
data1
data2
data3
data4
group3
data1
data2
data3
$ awk '$0=="group2" {print; gr=1; next}; /^group/ {gr=0}; gr {print}' file.txt
group2
data1
data2
data3
data4