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, ()
?
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*\)'
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.
$ echo "init()" | grep -Erin 'init\([^)]*\)'
1:init()
$ echo "init(test)" | grep -Erin 'init\([^)]*\)'
1:init(test)
$ echo "initwhat" | grep -Erin 'init\([^)]*\)'
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