在grep/ack中转义括号

YXD*_*YXD 25 regex grep ack

我想查找字符串"methodname(",但我无法逃避"(".我怎么能得到

grep methodname( *
Run Code Online (Sandbox Code Playgroud)

要么

ack-grep methodname( *
Run Code Online (Sandbox Code Playgroud)

上班?

eph*_*ent 31

解释的有两件事(:shell,和ack-grep.

您可以使用'',, ""或从shell中\逃脱(,例如

grep 'methodname(' *
grep "methodname(" *
grep methodname\( *
Run Code Online (Sandbox Code Playgroud)

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\[\(\] *
Run Code Online (Sandbox Code Playgroud)

  • 或者如果你不想对paren进行转义,对于Perl,请使用-Q标志.`ack -Q'methodname('` (10认同)