web-dev-qa-db-fra.com

Comment échapper aux parenthèses dans grep

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*\)'
49
Matthew Flaschen

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.

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

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

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

Accédez à votre répertoire racine (si vous savez où se trouvent les fichiers JavaScript). Procédez ensuite comme suit.

grep 'init()' *.js
1
Konark Modi