Экранирование скобки в 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(
$