chcę szukać napisu „methodname (”, ale nie jestem w stanie uciec „(”. Jak mogę uzyskaćUciekając nawias w grep/ACK
grep methodname(*
lub
ack-grep methodname(*
pracować
chcę szukać napisu „methodname (”, ale nie jestem w stanie uciec „(”. Jak mogę uzyskaćUciekając nawias w grep/ACK
grep methodname(*
lub
ack-grep methodname(*
pracować
Są dwie rzeczy interpretowania (
: powłoka i ack-grep
.
Można użyć ''
, ""
lub \
, aby usunąć z powłoki powłokę (
, np.
grep 'methodname(' *
grep "methodname(" *
grep methodname\(*
grep
wykorzystuje podstawowy język wyrażeń regularnych domyślnie, więc (
nie jest wyjątkowy. (Byłoby jeśli użyto egrep
lub grep -E
lub grep -P
.)
Z drugiej strony, ack-grep
trwa Perl wyrażeń regularnych jako wejście w którym (
jest również specjalny, więc będziesz musiał uciec, że zbyt.
ack-grep 'methodname\(' *
ack-grep "methodname\\(" *
ack-grep methodname\\\(*
ack-grep 'methodname[(]' *
ack-grep "methodname[(]" *
ack-grep methodname\[\(\] *
Spróbuj dodać \
przed (
Mały demo:?.
$ cat file
bar
methodname(
foo
$ grep -n methodname\(file
2:methodname(
$
Enclosing wzór w pojedyncze lub podwójne cudzysłowy działa również:
$ grep -n 'methodname(' file
2:methodname(
$ grep -n "methodname(" file
2:methodname(
$
Lub jeśli nie chcesz wykonywać ucieczki paren, dla Perl, użyj - Flaga Q. "ack -Q" nazwa metody ('' –
Pojedyncze cytaty są najlepsze, jeśli chcesz wyszukać np. Zmienne PHP z prefiksem '$' .Ale znowu, pojedyncze cudzysłowy zmusza Cię do użycia brzydkiego escaping jeśli chcesz szukać ciągi zawierające pojedyncze cytaty: http://stackoverflow.com/questions/7254509/how-to-escape-single-quotes-in-bash-grep –
Nigdy nie wiedziałem o ack-grep - Dzięki! – Michael