Como extrair texto de um arquivo grande, iniciando na primeira ocorrência da string?

7

Eu tenho um arquivo de log grande que desejo revisar. Todas as coisas ruins começam na ocorrência certa de uma string de erro. Eu quero então olhar para as últimas x linhas daquele ponto e ver o que pode ter causado esse erro. Não consigo abrir o arquivo com meu editor de texto favorito porque ele esgota toda a RAM da máquina.

Pensei que talvez fosse possível encontrar a linha em que ela ocorre e, em seguida, use outro utilitário para obter dados da linha x para a linha y. Isso é possível?

    
por deed02392 24.09.2013 / 21:11

1 resposta

11

Você pode simplesmente usar "grep" com as opções -A e / ou -B. A opção -A irá ler o número X de linhas após o erro, então é provavelmente o que você quer, e a opção -B irá ler o número X de linhas antes do erro, então você faria algo assim:

grep -A10 -B2 "string to find" /path/and/file.tofind

Para encontrar as 10 linhas que ocorrem depois de "string to find", bem como as duas linhas anteriores a ele.

Alternativamente - e provavelmente uma solução muito pior, você poderia simplesmente usar "head" e "tail" para encontrar a primeira e a última parte do arquivo que você quer, mas isso pressupõe que você conheça os números das linhas. Ou seja, se você tiver um arquivo de linha longa e quiser ler as linhas 500-510, tente isso:

head -510 /etc/file/to/search | tail -10

O que primeiro extrairia as primeiras 510 linhas do arquivo e depois leria as últimas 10 dessas linhas.

    
por 24.09.2013 / 21:30

Tags