É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