grep は 1 つ以上の単語を探します。

grep は 1 つ以上の単語を探します。

タイプが一致するかどうかを検索したいです。 super([A-Za-z]+ , self) コードベースから。

$ grep -nr '[s][u][p][e][r][(]' .それを含むすべての行を表示しsuper(たいときに
[A-Za-z] +を使用して以下の行を検索しようとすると、結果はありません。誰かが私のコードベースのすべての行を検索するのを手伝うことはできますかsuper(*word* , self)

anupam:codebase-2.0$ grep -nr '[s][u][p][e][r][(][A-Za-z]+' .
anupam:codebase-2.0$ 

ベストアンサー1

デフォルトでは、grepBRE(基本正規表現)が使用されます。つまり、このような特殊文字は+リテラル文字として解釈されます。したがって、GNU grepではエスケープされて作成する必要があります\+。 (またはフラグで拡張正規表現(ERE)を使用できます。詳細については、参考-E資料を参照してください。man grep)したがって、コマンドは次のように書くことができます。

grep -nr '[s][u][p][e][r][(][A-Za-z]\+'

また、[…]各文字の周りの線は不要です。一致[…]などの文字クラスを指定するために使用されます。[ab]a または b。に文字が1つしかない場合、[…]これは唯一の一致です。したがって、コードを次のようにさらに簡素化できます。

grep -nr 'super([A-Za-z]\+'

注:によるとスティーブン・チャジェラス~のコメント、この\+設定はGNU拡張です。それでも問題が解決しない場合は、お試しください\{1,\}

おすすめ記事