web-dev-qa-db-fra.com

Faire correspondre la chaîne exacte à l'aide de grep

J'ai un fichier texte:

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

et je veux faire correspondre exactement deiauk. Quand je fais ça:

grep "deiauk" file.txt

J'obtiens ce résultat:

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

mais j'ai seulement besoin de ça:

deiauk 1611516 afsdf 765
deiauk 1611516 afsdf ddfgfgd

Je sais qu'il y a un -w option, mais ma chaîne doit ensuite machiner toute la ligne.

76
user3334375

Essayez l'un des:

grep -w "deiauk" textfile

grep "\<deiauk\>" textfile
141
Janis

Essayez ceci avec GNU grep et marquez les limites de Word avec \b:

grep "\bdeiauk\b" file

Production:

 deiauk 1611516 afsdf 765 

Voir: http://www.regular-expressions.info/wordboundaries.html

14
Cyrus

Si votre grep prend en charge -P (PCRE), vous pouvez faire:

$ grep -P '(^|\s)\Kdeiauk(?=\s|$)' file.txt 
deiauk 1611516 afsdf 765
deiauk 1611516 afsdf ddfgfgd
8
heemayl

Selon vos données réelles, vous pouvez rechercher le mot suivi d'un espace:

grep 'deiauk ' file.txt 

Si vous savez que cela doit être au début de la ligne, vérifiez-le:

grep '^deiauk ' file.txt 
5
Volker Siegel