我想查找字符串“methodname(”,但我无法逃避“(”。我怎么能
grep methodname( *
或
ack-grep methodname( *
上班?
答案 0 :(得分:29)
解释(
有两件事:shell和ack-grep
。
您可以使用''
,""
或\
从shell中转义(
,例如
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\[\(\] *
答案 1 :(得分:0)
尝试在\
之前添加(
。
小演示:
$ cat file
bar
methodname(
foo
$ grep -n methodname\( file
2:methodname(
$
用单引号或双引号括起模式也有效:
$ grep -n 'methodname(' file
2:methodname(
$ grep -n "methodname(" file
2:methodname(
$