Je veux appeler un appel de fonction "init ()" dans tous les fichiers JavaScript d'un répertoire. Comment faire cela en utilisant grep?
En particulier, comment puis-je échapper aux parenthèses, ()
?
Ça dépend. Si vous utilisez grep régulier, vous n'échappez pas:
echo '(foo)'|grep '(fo*)'
Vous devez réellement vous échapper si vous souhaitez utiliser les parenthèses en tant que regroupement.
Si vous utilisez expressions régulières étendues , vous vous échappez:
echo '(foo)'|grep -E '\(fo*\)'
Si vous souhaitez 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 modèle comme une chaîne simple à rechercher et non comme une expression régulière. Je pense que c'est aussi plus rapide que de faire une recherche d'expressions rationnelles.
$ echo "init()" | grep -Erin 'init\([^)]*\)'
1:init()
$ echo "init(test)" | grep -Erin 'init\([^)]*\)'
1:init(test)
$ echo "initwhat" | grep -Erin 'init\([^)]*\)'
Accédez à votre répertoire racine (si vous savez où se trouvent les fichiers JavaScript). Procédez ensuite comme suit.
grep 'init()' *.js