Gostaria de acompanhar um arquivo de log que está sendo gravado continuamente, mas gostaria de excluir várias entradas que são 'comuns', para que só veja erros, etc., à medida que são lançados. Posso canalizar para grep -v "pattern", mas o ideal seria usar um arquivo contendo entradas para pular. Alguma ideia?
Responder1
Você pode usar grep -v "pattern"
como você disse. Mas em vez de pattern
usar
`cat file_with_entires_to_skip`
Lembre-se de incluir os backtics. Então seu comando ficaria assim:
tail -v FILE | grep -v "`cat FILE_WITH_ENTRIES_TO_SKIP`"
Responder2
A -f
opção grep
permite especificar um arquivo contendo padrões, um padrão por linha. Veja a grep(1)
página de manual.
Além disso, o unbuffer
comando disponível em alguns sistemas desabilitará o buffer de saída que normalmente ocorre em pipelines. Caso contrário, a adição do grep
filtro poderá atrasar a saída do seu pipeline. Consulte a unbuffer(1)
página de manual para obter detalhes.
Responder3
Meu grep inclui uma --exclude-from=FILE
opção que permite adicionar padrões de exclusão de um arquivo. Eu tenho:
my-macbook-pro:Sun America ianchesal$ grep --version
grep (GNU grep) 2.5.1
Então você poderia fazer:
tail -f <file> | grep --exclude-from=excludes.txt
Responder4
Tente usar: grep -v -f EXCLUDE_FILENAME_LIST TARGET_FILENAME
EXCLUDE_FILENAME_LIST = Lista de palavras que você deseja extrair da sua pesquisa TARGET_FILENAME = O arquivo primário que você deseja obter