regex - ack grep
Escapando un paréntesis en grep/ack (2)
Hay dos cosas que interpretan el (
: el shell y el ack-grep
.
Puede usar ''''
, ""
o /
para escapar del (
desde el shell, por ejemplo,
grep ''methodname('' *
grep "methodname(" *
grep methodname/( *
grep
usa un lenguaje básico de expresiones regulares de forma predeterminada, por lo que (
no es especial. (Lo sería si usara egrep
o grep -E
o grep -P
).
Por otro lado, ack-grep
toma expresiones regulares de Perl como entrada, en la cual (
también es especial, por lo que tendrás que escapar de eso también).
ack-grep ''methodname/('' *
ack-grep "methodname//(" *
ack-grep methodname///( *
ack-grep ''methodname[(]'' *
ack-grep "methodname[(]" *
ack-grep methodname/[/(/] *
Quiero buscar la cadena "nombre de método ("), pero no puedo escapar de la "(". ¿Cómo puedo obtener
grep methodname( *
o
ack-grep methodname( *
¿trabajar?
Intente agregar un /
antes de (
.
Pequeña demo:
$ cat file
bar
methodname(
foo
$ grep -n methodname/( file
2:methodname(
$
Encerrar el patrón entre comillas simples o dobles también funciona:
$ grep -n ''methodname('' file
2:methodname(
$ grep -n "methodname(" file
2:methodname(
$