2

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

function(some text $tring||$_string)

目前我正在使用以下命令

find . -type f | xargs grep "function"

我尝试使用

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

但它没有用。

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

  • 包括函数()
  • 在函数内部,匹配以下任一字符串
    • $字符串或
    • $_tring

我该怎么做呢?

4

3 回答 3

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
于 2012-12-09T18:52:43.527 回答
1

我推荐你ack,它是为此目的而设计的(它过滤文件以不搜索.svn.git以及这样的 dirs )。

http://betterthangrep.com/

所以 :

ack -r "function.*(\$[s_]tring)"
于 2012-12-09T18:47:51.747 回答
1

尝试

find . -type f | xargs egrep 'function\(.*$[s_]tring.*\)'
于 2012-12-09T18:49:43.270 回答