私は次のコードを使用しています
$ 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
egrep
1つの方法は、次のように使用することですgrep -E
。
rpm -qa | egrep -i '.*gcc.*'
指定された検索文字列を正規表現として使用します。ここで、ピリオド(.)は任意の文字を表し、アスタリスク(*)はそのうちの1つ以上を表します。
私はあなたが使用したいものがrpm -qa | grep -i *gcc*
ファイル名グロービングというほとんどのシェル機能だと思います。この技術はgrepでは機能しません。gcc
ここでは、明示的に指定するのではなく、最初の例のように、すべてが文字列に含まれることを想定しています。
*gcc*
編集:との違いは、.*gcc.*
最初のエラーが実際にはegrepの構文エラーであることです。しかし、おそらくこれを教えてくれません。アスタリスク(*)は、前の文字に続くゼロ文字以上に興味があることを正規表現パーサーに伝える修飾子です。最初の式には一重引用符( ')は含まれていないため、先行文字はありません。