我想搜索 type 的出现。
super([A-Za-z]+ , self)
在代码库中。
当我要向
$ grep -nr '[s][u][p][e][r][(]' .
我显示所有包含 的行时super(
,
当我尝试使用 [A-Za-z]+ 搜索下面的行时,我没有得到任何结果。有人可以帮我搜索所有行吗在我的代码库中有super(*word* , self)
。
anupam:codebase-2.0$ grep -nr '[s][u][p][e][r][(][A-Za-z]+' .
anupam:codebase-2.0$
答案1
默认情况下,grep
使用 BRE(基本正则表达式),这意味着像这样的特殊字符+
将被解释为文字字符。因此,在 GNU grep 中,需要对其进行转义,即写为\+
. (或者,您可以使用带有标志的 ERE(扩展正则表达式)-E
;请参阅 参考资料man grep
来了解更多信息。)因此,您的命令可以写成这样:
grep -nr '[s][u][p][e][r][(][A-Za-z]\+'
另外,[…]
每个字母周围都是不必要的。[…]
用于指定字符类,例如[ab]
可以匹配a
或者 b
。如果 中只有一个字母[…]
,则这是唯一的匹配项。因此,您的代码可以进一步简化为
grep -nr 'super([A-Za-z]\+'