【问题标题】:Regex grep, find $tring and $_tring inside function()正则表达式 grep,在 function() 中找到 $string 和 $string
【发布时间】:2012-12-09 18:42:55
【问题描述】:

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

function(some text $tring||$_string)

目前我正在使用以下命令

find . -type f | xargs grep "function"

我尝试过使用

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

但它不起作用。

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

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

我该怎么做?

【问题讨论】:

    标签: python regex linux unix


    【解决方案1】:
    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
    

    【讨论】:

      【解决方案2】:

      我推荐你ack,它是为此目的而设计的(它过滤文件以不在.svn.git 等目录中搜索)。

      http://betterthangrep.com/

      所以:

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

      【讨论】:

        【解决方案3】:

        试试

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

        【讨论】:

          猜你喜欢
          • 2014-05-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-07
          • 1970-01-01
          相关资源
          最近更新 更多