Como agrupar várias linhas em um arquivo

1

Por exemplo, eu tenho um arquivo como este:

group1
data1
data2
data3
group2
data1
data2
data3
group3
data1
data2
data3

Eu quero obter um grupo específico no arquivo e seus dados. Por exemplo, só deseja obter todos os dados em group2 apenas.

    
por noobCoder888 01.09.2016 / 11:27

1 resposta

2

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 apenas group2 , imprimiremos a linha, definiremos a variável gr para 1 (verdadeiro) e passaremos para a próxima linha

  • /^group/ {gr=0} , se a linha começar com group (qualquer outro grupo), definimos gr como 0 (false)

  • gr {print} imprime a linha quando gr é verdadeiro. Como a ação padrão de awk é 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
    
por 01.09.2016 / 12:05