grep *gcc* は何も一致しません

grep *gcc* は何も一致しません

私は次のコードを使用しています

$ rpm -qa | grep -i gcc
libgcc-4.8.3-7.fc20.i686
gcc-c++-4.8.3-7.fc20.x86_64
gcc-4.8.3-7.fc20.x86_64
libgcc-4.8.3-7.fc20.x86_64

$ rpm -qa | grep -i *gcc*
$ 

2番目の方法は最初の方法と同じであることを望みますが、何も印刷されません。grep正しいコマンドを使用していますか?

答え1

egrep1つの方法は、次のように使用することですgrep -E

rpm -qa | egrep -i '.*gcc.*'

指定された検索文字列を正規表現として使用します。ここで、ピリオド(.)は任意の文字を表し、アスタリスク(*)はそのうちの1つ以上を表します。

私はあなたが使用したいものがrpm -qa | grep -i *gcc*ファイル名グロービングというほとんどのシェル機能だと思います。この技術はgrepでは機能しません。gccここでは、明示的に指定するのではなく、最初の例のように、すべてが文字列に含まれることを想定しています。

*gcc*編集:との違いは、.*gcc.*最初のエラーが実際にはegrepの構文エラーであることです。しかし、おそらくこれを教えてくれません。アスタリスク(*)は、前の文字に続くゼロ文字以上に興味があることを正規表現パーサーに伝える修飾子です。最初の式には一重引用符( ')は含まれていないため、先行文字はありません。

関連情報