Como pesquisar com "grep" usando strings em um arquivo

Grep é uma ferramenta incrível para pesquisar arquivos de log e extrair informações úteis, mas e se você quiser pesquisar um arquivo de log usando uma lista gigante de palavras-chave de outro arquivo? Felizmente, ele também tem esse recurso integrado.
Isso aconteceu comigo quando eu queria puxar uma lista de todos os URLs que foram solicitados por um grande bloco de IPs que estava atacando abusivamente nosso servidor. Depois de identificar e criar a lista de mil IPs, precisei extrair os URLs do arquivo de log principal para identificar os recursos mais solicitados.
Para fazer isso, você &’ vai querer usar o argumento -f, que permite especificar um arquivo para a lista de padrões a serem pesquisados.
-f FILE, --file = FILE Obtém padrões de FILE, um por linha. O arquivo vazio contém zero padrões e, portanto, não corresponde a nada. (-f é especificado por POSIX.)
Supondo que seu conjunto de palavras-chave ou strings esteja em um arquivo denominado “ searchstrings ”, você pode usar o argumento na linha de comando como o exemplo a seguir. Como essa pesquisa vai gerar uma tonelada de dados, o “ > output. txt ” parte do comando envia o resultado do comando para um arquivo chamado output. txt que pode ser analisado separadamente.
grep -f searchstrings filetosearch > output. txt
O único problema com o uso do argumento -f é que grep tentará interpretar as palavras-chave como se fossem padrões, o que pode torná-lo lento ao analisar um arquivo extremamente grande. Portanto, você também pode especificar o parâmetro -F, que diz ao grep para fazer apenas correspondências exatas com as strings.
-F, --fixed-strings Interpreta PATTERN como uma lista de strings fixas, separadas por novas linhas, qualquer uma das quais deve ser correspondida. (-F é especificado por POSIX.)
Publicidade
Portanto, o comando completo seria mais parecido com isto:
grep -F -f searchstrings filetosearch > output. txt
Grep é uma maneira ridiculamente poderosa de pesquisar arquivos de log, então valeria a pena examinar o arquivo man.
Nenhum comentário