conta as linhas após as linhas combinadas com o padrão

1

Como posso contar as linhas entre padrões e redirecionar a contagem de linhas no arquivo?

exemplo:

PATTERN FOUND 
rows 
rows 
rows 
PATTERN FOUND 
rows 
rows

O resultado esperado deve ser:

3
2
    
por Luca 19.04.2018 / 15:30

1 resposta

2

Usando awk :

$ awk -v RS='PATTERN FOUND' 'NF{print NF}' infile
3
2

Ou se o seu rows for realmente um conjunto de frases, você pode fazer:

$ awk -v RS='PATTERN FOUND' -F'\n' 'NF{print NF-2}' infile >output

Acima de awk no arquivo de entrada de amostra abaixo:

PATTERN FOUND
rows
rows
rows
PATTERN FOUND
rows
rows
Here PATTERN FOUND :
zero first
second

fourth fifth sixth and last

Irá dar-lhe o resultado:

3
2
4

Para se livrar das linhas vazias e não contá-las:

awk -v RS='PATTERN FOUND' -F'(\n)+' 'NF{print NF-2}' infile

e para se livrar das linhas vazias e aquelas que contêm apenas espaços em branco (Tabs ou Spaces):

awk -v RS='PATTERN FOUND' -F'(\n|^[ \t]*$)+' 'NF{print NF-2}' infile
    
por 19.04.2018 / 16:12