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-match
Isso 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 -L
que faz o oposto:
grep -L "bar". /*.txt
Certifique-se de não usar -v
o sinalizador c -L
para 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