Como usar correspondência negativa com grep no Linux (imprimir linhas que não correspondem)

Como usar correspondência negativa com grep no Linux (imprimir linhas que não correspondem)

grep é um utilitário de pesquisa de linha de comando para Linux que imprime linhas em arquivos que correspondem a um padrão ou expressão regular. Também é útil inverter as correspondências para filtrar todas as linhas em um arquivo que contém uma determinada string.

Correspondência negativa com grep

Para usar uma correspondência negativa em grep, você deve emitir o comando com os -v sinalizadores ou . --invert-matchIsso imprimirá apenas as linhas que não correspondem ao padrão fornecido.

grep -v "bar"file

Esteja ciente, no entanto, de que, como grep nada corresponde, não há como usar -o o sinalizador para gerar “apenas correspondências”, pois nada corresponde tecnicamente. grep pode corresponder várias vezes em uma string, mas nesse caso não importa se houver várias correspondências. Qualquer correspondência única resultará grep em um salto de linha.

Isso também funciona com expressões regulares (regexes) e imprimirá qualquer string que corresponda ao regex.

grep -v "foo ba[rz]"file

Embora você possa escrever expressões regulares que façam uma correspondência negativa, geralmente é mais fácil reverter a correspondência dessa maneira.

Como alternativa, se preferir usar awk, você pode usar o modificador de exclamação para inverter a expressão regular.

awk '!/bar/' file

Nomes de arquivos correspondentes negativos

O sinalizador em minúsculas -l fará com que os grep nomes de arquivos que contenham correspondências sejam impressos em vez do conteúdo correspondente real. Isso pode ser útil ao verificar uma lista de arquivos, mas às vezes também é útil invertê-la.

Reverse -l é uma variante em maiúsculas -Lque faz o oposto:

grep -L "bar". /*.txt

Certifique-se de não usar -v o sinalizador c -Lpara reverter a correspondência antes de imprimir arquivos sem correspondência, ou você se deparará com uma situação de “opostos duplos” em que a correspondência é invertida duas vezes e não tem o efeito desejado.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *