28

我想寻找字符串“methodname(”,但我无法逃脱“(”。我怎样才能得到

grep methodname( *

或者

ack-grep methodname( *

去工作?

4

2 回答 2

35

有两件事可以解释(: shell 和ack-grep.

您可以使用'', "", 或从外壳\中转义,例如(

grep 'methodname(' *
grep "methodname(" *
grep methodname\( *

grep默认情况下使用基本的正则表达式语言,所以(并不特别。(如果您使用egreporgrep -Egrep -P。)

另一方面,ack-grep将 Perl 正则表达式作为输入,其中(也很特殊,因此您也必须对其进行转义。

ack-grep 'methodname\(' *
ack-grep "methodname\\(" *
ack-grep methodname\\\( *
ack-grep 'methodname[(]' *
ack-grep "methodname[(]" *
ack-grep methodname\[\(\] *
于 2011-01-21T16:40:38.720 回答
1

尝试\(.

小演示:

$ cat file
bar
methodname(
foo
$ grep -n methodname\( file
2:methodname(
$ 

用单引号或双引号将模式括起来也可以:

$ grep -n 'methodname(' file
2:methodname(
$ grep -n "methodname(" file
2:methodname(
$ 
于 2011-01-21T16:33:56.367 回答