Экранирование скобки в grep/ack
Я хочу найти строку " methodname(", но я не могу избежать "(". Как я могу получить
grep methodname( *
или
ack-grep methodname( *
работать?
2 ответов
есть две вещи, интерпретирующие (: раковина, и 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(
$