Grep as linhas entre a ocorrência do mesmo padrão [duplicado]

2

Eu gostaria de percorrer as linhas entre a mesma ocorrência de um padrão e, em seguida, salvar cada linha correspondente em um arquivo diferente. Por exemplo, eu tenho isso:

name
aaa
bbb
bbb
ccc
name
aaa1
bbb1
ccc1
name
...

Eu gostaria de ter

name
aaa
bbb
bbb
ccc

no arquivo1

name
aaa1
bbb1
ccc1

no arquivo 2 e assim por diante.

Eu tentei com uma inversão de flag no awk assim:

awk '/^name/ {flag=!flag; next} flag {print}'

mas não estou conseguindo o que quero.

Você tem alguma sugestão para fazer isso?

    
por Ugo Giordano 20.02.2017 / 01:24

2 respostas

2

Que tal:

awk '/name/{n+=1}{print > "file_"n".txt"}'

Que produzirá file_1.txt , file_2.txt ... etc

    
por 20.02.2017 / 01:50
2

Você também pode usar o "csplit" para esse fim, como em:

csplit yourfile -s -n 1 -f file_ '%name%' '/name/' '{*}'

Isso produzirá os arquivos "file_1", "file_2", etc.

    
por 20.02.2017 / 05:09

Tags