在我的debian机器上,我正在玩一些代码和正则表达式。所以无论如何,我想在一些代码文件中找到以下模式:
function(some text $tring||$_string)
目前我正在使用以下命令
find . -type f | xargs grep "function"
我尝试使用
find . -type f | xargs grep "function(*$string||$_tring*)"
但它不起作用。
基本上,它需要搜索符合以下规则的所有模式
我该怎么做?
答案 0 :(得分:2)
find . -type f -exec egrep -Hn 'function\(.*(\$string|\$_string).*\)' '{}' ';'
能够处理包含空格的文件名,以及是否有大量文件。
man 3 regex
如果您想了解有关正则表达式语法的更多信息:
. any character, in shell (sh/csh) this is '?'
.* zero or more any characters
a* zero or more a's
(alpha|beta) groups, either alpha or beta
^ beginning of string
$ end of string, that's why it needs to be escaped
答案 1 :(得分:1)
我建议您使用ack
,它专为此目的而设计(它会过滤文件,而不会在.svn
,.git
和此类目录中进行搜索)。
所以:
ack -r "function.*(\$[s_]tring)"
答案 2 :(得分:1)
尝试
find . -type f | xargs egrep 'function\(.*$[s_]tring.*\)'