Échapper une parenthèse dans grep / ack
Je veux chercher la chaîne "methodname(", mais je suis incapable d'échapper à la "(". Comment puis-je obtenir
grep methodname( *
Ou
ack-grep methodname( *
Travailler?
23
demandé sur
ealfonso
2011-01-21 19:32:32
2 réponses
Il y a deux choses interprétant le (: le shell, et ack-grep.
Vous pouvez utiliser '', "", ou \ pour échapper à la ( à partir du shell, par exemple
grep 'methodname(' *
grep "methodname(" *
grep methodname\( *
grep utilise un langage d'expression régulière de base par défaut, donc ( n'est pas spécial. (Il serait si vous avez utilisé egrep ou grep -E ou grep -P.)
D'un autre côté, ack-grep prend des expressions régulières Perl en entrée, dans lesquelles ( est également spécial, vous devrez donc y échapper aussi.
ack-grep 'methodname\(' *
ack-grep "methodname\\(" *
ack-grep methodname\\\( *
ack-grep 'methodname[(]' *
ack-grep "methodname[(]" *
ack-grep methodname\[\(\] *
29
répondu
ephemient
2011-01-21 16:40:38
Essayez d'ajouter \ avant (.
Petite démo:
$ cat file
bar
methodname(
foo
$ grep -n methodname\( file
2:methodname(
$
Enfermer le motif entre guillemets simples ou doubles fonctionne également:
$ grep -n 'methodname(' file
2:methodname(
$ grep -n "methodname(" file
2:methodname(
$
0
répondu
codaddict
2011-01-21 16:33:56