Examine um monte de arquivos enormes

1

Eu tenho uma pasta com arquivos grandes (alguns GB cada). Eu gostaria de pesquisar um PATTERN por meio desses arquivos. Eu posso fazer isso com grep ou ack :

$ grep -n 'PATTERN' /path/to/files/*.log

Agora, tenho uma lista com todas as linhas, incluindo PATTERN . No entanto, eu preciso de alguma área inclui essas linhas para ver contexto: poucas linhas antes de PATTERN ocorre e poucas linhas depois que ele ocorre. Eu preferiria listar esses blocos de linha com coordenadas de cada (número de arquivo e linha). Como isso pode ser feito?

    
por Loom 25.03.2016 / 12:02

1 resposta

4

Com o gnu grep

grep -B <number_lines> -A <number_lines> -n 'PATTERN' /path/to/files/*.log

por exemplo. para obter as 6 linhas acima da linha grep e 4 linhas depois:

grep -B 6 -A 4 -n 'PATTERN' /path/to/files/*.log

De man grep

Context Line Control
-A NUM, --after-context=NUM
Print NUM lines of trailing context after matching lines.
-B NUM, --before-context=NUM
Print NUM lines of leading context before matching lines.

    
por 25.03.2016 / 12:10