2

私のDebianマシンでは、コードと正規表現をいじっています。とにかく、私はいくつかのコードファイルで次のパターンを見つけようとしています。

function(some text $tring||$_string)

現在、次のコマンドを使用しています

find . -type f | xargs grep "function"

使ってみました

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

しかし、それは機能しませんでした。

基本的に、次のルールに一致するすべてのパターンを検索する必要があります

  • function()を含む
  • 関数内で、次の文字列のいずれかに一致します
    • $stringまたは
    • $ _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およびそのようなディレクトリ )。

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 に答える