我正在使用以下代码
$ 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*
$
我希望第二种方法能与第一种方法相同,但它不会打印任何内容。我使用grep
命令正确吗?
一种方法是使用egrep
或grep -E
类似这样的方法:
rpm -qa | egrep -i '.*gcc.*'
它将提供的搜索字符串用作正则表达式,其中句点(。)代表任何字符,星号(*)代表这些字符中的一个或多个。
我相信您尝试使用的rpm -qa | grep -i *gcc*
是大多数Shell的功能,称为文件名范围。此技术不适用于grep。与gcc
第一个示例一样,它假定您希望字符串中包含所有内容,而无需显式指定它。
编辑:*gcc*
和之间的区别.*gcc.*
是第一个实际上是egrep的语法错误,尽管它可能不会告诉您。星号(*)是一个修饰符,它告诉正则表达式解析器您对零个或多个前一个字符感兴趣。在第一个表达式中,没有前一个字符,因为单引号(')不计算在内。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句