grep para string não precedida por outra string

8

É possível, usando grep, procurar instâncias de John Smith , mas excluir instâncias de Mr John Smith ?

    
por Sam Hastings 12.12.2011 / 18:20

3 respostas

8

Isso pode ser resolvido usando uma expressão regular com lookbehind negativo (que é experimentalmente suportado em grep , como apontado pelo comentário do organizador):

$ grep -P '(?<!Mr )John Smith' file

Como o suporte é apenas experimental, convém usar perl :

$ perl -nle 'print if /(?<!Mr )John Smith/' file
    
por jcollado 12.12.2011 / 18:44
4

Você pode executar

command | grep 'John Smith' | grep -v 'Mr John Smith'
    
por enzotib 12.12.2011 / 18:28
1

Para usar expressões regulares, use ^ e $

grep "^John Smith$"

^ é a correspondência desde o início $ é a correspondência do final.

A sintaxe irá variar dependendo do que você está procurando em qual arquivo.

Você pode usar expressões regulares com sed, grep, awk ....

Exemplo

bodhi@Ubuntu:~ cat file
Mr John Smith
John Smith
John
Smith

bodhi@Ubuntu:~ grep "^John Smith$" file
John Smith
    
por Panther 12.12.2011 / 18:47

Tags