Quiero buscar la cadena "methodname (", pero soy incapaz de escapar de la "(". ¿Cómo puedo obtenerEscapar un paréntesis en grep/ACK
grep methodname(*
o
ack-grep methodname(*
para trabajar
Quiero buscar la cadena "methodname (", pero soy incapaz de escapar de la "(". ¿Cómo puedo obtenerEscapar un paréntesis en grep/ACK
grep methodname(*
o
ack-grep methodname(*
para trabajar
Hay dos cosas que interpretan la (
: la cáscara, y ack-grep
.
Puede utilizar ''
, ""
, o \
para escapar de la (
de la concha, por ejemplo
grep 'methodname(' *
grep "methodname(" *
grep methodname\(*
grep
utiliza un lenguaje de expresiones regulares básica por defecto, así (
no es especial. (Sería si utilizó egrep
o grep -E
o grep -P
.)
Por otro lado, ack-grep
toma Perl expresiones regulares como entrada, en la que (
también es especial, por lo que tendrá que escapar también.
ack-grep 'methodname\(' *
ack-grep "methodname\\(" *
ack-grep methodname\\\(*
ack-grep 'methodname[(]' *
ack-grep "methodname[(]" *
ack-grep methodname\[\(\] *
trate de añadir un \
antes de la (
pequeña demostración:?.
$ cat file
bar
methodname(
foo
$ grep -n methodname\(file
2:methodname(
$
Encerrando el patrón entre comillas simples o dobles también funciona:
$ grep -n 'methodname(' file
2:methodname(
$ grep -n "methodname(" file
2:methodname(
$
O si no quiere hacer el escape de la paren, para Perl, use el - Q flag. 'Ack -Q 'methodname (' ' –
Las comillas simples son las mejores si desea buscar, por ejemplo, variables de PHP con el prefijo' $ '. Pero, una vez más, las comillas simples lo fuerzan a usar feo escaping si quiere buscar cadenas que contienen comillas simples: http://stackoverflow.com/questions/7254509/how-to-escape-single-quotes-in-bash-grep –
Nunca supe de ack-grep - ¡Gracias! – Michael