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ávelgrpara 1 (verdadeiro) e passaremos para a próxima linha -
/^group/ {gr=0}, se a linha começar comgroup(qualquer outro grupo), definimosgrcomo 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