Corresponder string exata usando grep

45

Eu tenho um arquivo de texto:

deiauk 1611516 afsdf 765
minkra 18415151 asdsf 4152
linkra sfsfdsfs sdfss 4555
deiauk1 sdfsfdsfs 1561 51
deiauk2 115151 5454 4
deiauk 1611516 afsdf ddfgfgd
luktol1 4545 4 9
luktol 1

e quero corresponder exatamente a deiauk . Quando faço isso:

grep "deiauk" file.txt

Eu recebo este resultado:

deiauk 1611516 afsdf 765
deiauk1 sdfsfdsfs 1561 51
deiauk2 115151 5454 4

mas eu só preciso disso:

deiauk 1611516 afsdf 765
deiauk 1611516 afsdf ddfgfgd

Eu sei que há uma opção -w , mas minha string tem que fazer uma linha inteira.

    
por user3334375 01.06.2015 / 23:31

4 respostas

97

Experimente um dos:

grep -w "deiauk" textfile

grep "\<deiauk\>" textfile
    
por 02.06.2015 / 00:04
8

Tente isso com o GNU grep e marque os limites das palavras com \b :

grep "\bdeiauk\b" file

Saída:

deiauk 1611516 afsdf 765

Veja: link

    
por 01.06.2015 / 23:34
7

Se o seu grep suportar -P (PCRE), você pode fazer:

$ grep -P '(^|\s)\Kdeiauk(?=\s|$)' file.txt 
deiauk 1611516 afsdf 765
deiauk 1611516 afsdf ddfgfgd
    
por 02.06.2015 / 00:09
5

Dependendo dos seus dados reais, você pode procurar a palavra seguida por um espaço:

grep 'deiauk ' file.txt 

Se você sabe que tem que estar no começo da linha, verifique:

grep '^deiauk ' file.txt 
    
por 02.06.2015 / 06:26

Tags