101 votes

Grep pas comme une expression régulière

J'ai besoin de rechercher une variable PHP $someVar . Cependant, Grep pense que j'essaie d'exécuter une expression régulière et se plaint :

 $ grep -ir "Something Here" * | grep $someVar
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.
$ grep -ir "Something Here" * | grep "$someVar"
<<Here it returns all rows with "someVar", not only those with "$someVar">>

Je ne vois pas d'option pour dire à grep de ne pas interpréter la chaîne comme une expression régulière, mais d'inclure le $ comme un autre caractère de chaîne.

61voto

rkhayrov Points 5829

grep -F est un moyen standard de dire à grep d'interpréter l'argument comme une chaîne fixe, pas un modèle.

8voto

huelbois Points 1993

Vous devez dire à grep que vous utilisez une chaîne fixe, au lieu d'un motif, en utilisant '-F' :

 grep -ir "Something Here" * | grep -F \$somevar

2voto

Aloïké Go Points 81

+1 pour l' -F , ce sera la réponse acceptée. De plus, j'ai eu un comportement "étrange" lors de la recherche du -I.. dans mes fichiers, car le -I était considéré comme une option de grep ; pour éviter ce genre d'erreurs, nous pouvons spécifier explicitement la fin des arguments de la commande en utilisant -- .

Exemple:

 grep -HnrF -- <pattern> <files>

J'espère que ça aidera quelqu'un.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X