Я хочу, чтобы искать строку «MethodName (», но я не смог избежать «(». Как я могу получитьСпасаясь скобку в Grep/ACK
grep methodname(*
или
ack-grep methodname(*
работать
Я хочу, чтобы искать строку «MethodName (», но я не смог избежать «(». Как я могу получитьСпасаясь скобку в Grep/ACK
grep methodname(*
или
ack-grep methodname(*
работать
Там две вещи, интерпретирующие (
: оболочка и ack-grep
.
Вы можете использовать ''
, ""
или \
избежать (
из оболочки, например,
grep 'methodname(' *
grep "methodname(" *
grep methodname\(*
grep
использует базовый язык регулярных выражений по умолчанию, поэтому (
не является специальным. (Это было бы, если вы использовали egrep
или grep -E
или grep -P
.)
С другой стороны, ack-grep
принимает Perl регулярные выражения в качестве входных данных, в которых (
является особенным, так что вы будете иметь, чтобы избежать этого тоже.
ack-grep 'methodname\(' *
ack-grep "methodname\\(" *
ack-grep methodname\\\(*
ack-grep 'methodname[(]' *
ack-grep "methodname[(]" *
ack-grep methodname\[\(\] *
Попробуйте добавить \
до того, как (
Малый демо:.
$ cat file
bar
methodname(
foo
$ grep -n methodname\(file
2:methodname(
$
вшита шаблон в одинарные или двойные кавычки, также работает:
$ grep -n 'methodname(' file
2:methodname(
$ grep -n "methodname(" file
2:methodname(
$
Или, если вы не хотите выполнять экранирование для Paren, для Perl используйте кнопку - Q. 'Ack -Q 'methodname ('' –
Одиночные кавычки лучше всего, если вы хотите найти, например, переменные PHP с префиксом '$'. Но опять же, одинарные кавычки заставляют вас использовать уродливое экранирование, если вы хотите искать строки, содержащие одинарные кавычки: http://stackoverflow.com/questions/7254509/how-to-escape-single-quotes-in-bash-grep –
Я никогда не знал о ack-grep - Спасибо! – Michael