voglio guardare la stringa "methodName (", ma sono in grado di sfuggire alla "(". Come posso ottenereEscaping una parentesi nella grep/ACK
grep methodname(*
o
ack-grep methodname(*
a lavorare
voglio guardare la stringa "methodName (", ma sono in grado di sfuggire alla "(". Come posso ottenereEscaping una parentesi nella grep/ACK
grep methodname(*
o
ack-grep methodname(*
a lavorare
Ci sono due cose che interpretano il (
: il guscio, e ack-grep
.
È possibile utilizzare ''
, ""
o \
per sfuggire alla (
dal guscio, per esempio
grep 'methodname(' *
grep "methodname(" *
grep methodname\(*
grep
utilizza un linguaggio di base delle espressioni regolari per impostazione predefinita, in modo da (
non è speciale. (Sarebbe se si è utilizzato egrep
o grep -E
o grep -P
.)
D'altra parte, ack-grep
prende Perl espressioni regolari come input, in cui (
è anche speciale, quindi dovrete per sfuggire anche questo.
ack-grep 'methodname\(' *
ack-grep "methodname\\(" *
ack-grep methodname\\\(*
ack-grep 'methodname[(]' *
ack-grep "methodname[(]" *
ack-grep methodname\[\(\] *
provare ad aggiungere un \
prima della (
piccola demo:?.
$ cat file
bar
methodname(
foo
$ grep -n methodname\(file
2:methodname(
$
Racchiudere il modello tra virgolette singole o doppie funziona anche:
$ grep -n 'methodname(' file
2:methodname(
$ grep -n "methodname(" file
2:methodname(
$
Oppure se non vuoi eseguire l'escape del paren, per Perl, usa il - Q flag. 'Ack -Q 'methodname ('' –
Le virgolette singole sono le migliori se si desidera cercare, ad esempio, variabili PHP con prefisso '$'. Ma poi di nuovo, le virgolette singole ti costringono a usare la brutta escaping se vuoi cercare stringhe contenenti citazioni singole: http://stackoverflow.com/questions/7254509/how-to-escape-single-quotes-in-bash-grep –
Non ho mai saputo di ack-grep - Grazie! – Michael