Comment échapper à la parenthèse dans grep

Je veux grep pour un appel de fonction "init ()" dans tous les fichiers JavaScript dans un répertoire. Comment puis-je faire cela en utilisant grep?

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

43
demandé sur Almo 2010-09-09 07:35:16

4 réponses

Ça dépend. Si vous utilisez grep régulier, vous n'échappez pas:

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

Vous devez réellement échapper si vous voulez utiliser les parenthèses comme regroupement.

Si vous utilisez les expressions régulières étendues, vous faire échapper:

echo '(foo)'|grep -E '\(fo*\)'
44
répondu Matthew Flaschen 2011-12-22 08:21:12

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

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

19
répondu Dave Kirby 2010-09-09 09:55:39
$ echo "init()" | grep -Erin 'init\([^)]*\)'
1:init()

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

$ echo "initwhat" | grep -Erin 'init\([^)]*\)'
4
répondu ghostdog74 2010-09-09 05:45:04

Déplacez-vous vers votre répertoire racine (si vous savez où se trouvent les fichiers JavaScript). Puis effectuez les opérations suivantes.

grep 'init()' *.js
1
répondu Konark Modi 2011-12-22 08:21:40