正则表达式grep,在函数中查找$ string和$ string()

时间:2012-12-09 18:42:56

标签: python regex linux unix

在我的debian机器上,我正在玩一些代码和正则表达式。所以无论如何,我想在一些代码文件中找到以下模式:

function(some text $tring||$_string)

目前我正在使用以下命令

find . -type f | xargs grep "function"

我尝试使用

find . -type f | xargs grep "function(*$string||$_tring*)"

但它不起作用。

基本上,它需要搜索符合以下规则的所有模式

  • 包括function()
  • 内部函数,匹配以下任一字符串
    • $ string或
    • $ _特林

我该怎么做?

3 个答案:

答案 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和此类目录中进行搜索)。

请参阅http://betterthangrep.com/

所以:

ack -r "function.*(\$[s_]tring)"

答案 2 :(得分:1)

尝试

find . -type f | xargs egrep 'function\(.*$[s_]tring.*\)'