我无法正确(并且安全地)使用grep执行正确的正则表达式搜索。我似乎能够使用ag
我想用简单的英语做什么:
搜索当前目录(递归?),查找包含“嵌套”和“合并”字样的行的文件
使用ag成功尝试:
$ ag --depth=2 -l "nested.*merge|merge.*nested" .
scratch.md
scratch.rb
使用grep:
尝试失败$ grep -elr 'nested.*merge|merge.*nested' .
grep: nested.*merge|merge.*nested: No such file or directory
grep: .: Is a directory
我错过了什么?此外,是否可以改进方法?
谢谢!
答案 0 :(得分:3)
您可能希望-E
不是-e
,或只是egrep
。
man grep
会让您了解-e
为什么会给您错误。
答案 1 :(得分:0)
您可以使用grep -lr 'nested.*merge\|merge.*nested'
或grep -Elr 'nested.*merge|merge.*nested'
作为案件
此外,对于后者,E
表示使用ERE
正则表达式语法,因为grep
默认使用BRE
,其中|
将匹配字符{{ 1}}和|
表示\|
有关or
和ERE
的详细信息,请参阅this article