我想搜索 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$
Run Code Online (Sandbox Code Playgroud)
默认情况下,grep
使用 BRE(基本正则表达式),这意味着像这样的特殊字符+
将被解释为文字字符。因此,在 GNU grep 中,它需要被转义,即写为\+
. (或者,您可以使用带有-E
标志的ERE(扩展正则表达式);man grep
有关更多信息,请参阅。)因此,您的命令可以这样编写:
grep -nr '[s][u][p][e][r][(][A-Za-z]\+'
Run Code Online (Sandbox Code Playgroud)
另外,[…]
不需要周围的各文字。[…]
用于指定字符类,例如[ab]
可以匹配到a
或 b
。如果 中只有一个字母[…]
,则这是唯一的匹配项。因此,您的代码可以进一步简化为
grep -nr 'super([A-Za-z]\+'
Run Code Online (Sandbox Code Playgroud)
注意 根据Stéphane Chazelas的评论,该\+
构造是 GNU 扩展。如果这不起作用,您可以\{1,\}
改为尝试。