87 votes

Comment échapper à la parenthèse dans grep

Je veux grep pour un appel de fonction 'init()' dans tous les fichiers JavaScript d'un répertoire. Comment faire avec grep ?

En particulier, comment puis-je échapper à la parenthèse, () ?

81voto

Matthew Flaschen Points 131723

Cela dépend. Si vous utilisez un grep normal, vous ne vous échappez pas :

echo '(foo)' | grep '(fo*)'

Vous devez en fait vous échapper si vous voulez utiliser les parenthèses comme groupe.

Si vous utilisez des expressions régulières étendues, vous échappez :

echo '(foo)' | grep -E '\(fo*\)'

26voto

Dave Kirby Points 12310

Si vous voulez rechercher exactement la chaîne "init()" alors utilisez fgrep "init()" ou grep -F "init()".

Les deux feront une correspondance de chaîne fixe, c'est-à-dire traiteront le modèle comme une chaîne simple à rechercher et non comme une regex. Je crois qu'il est aussi plus rapide que de faire une recherche regex.

4voto

ghostdog74 Points 86060
$ echo "init()" | grep -Erin 'init\([^)]*\)'
1:init()

$ echo "init(test)" | grep -Erin 'init\([^)]*\)'
1:init(test)

$ echo "initwhat" | grep -Erin 'init\([^)]*\)'

2voto

Konark Modi Points 338

Déplacez-vous vers votre répertoire racine (si vous savez où se trouvent les fichiers JavaScript). Ensuite, procédez comme suit.

grep 'init()' *.js

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