grep 正则表达式 + 捕获 rpm 的版本

grep 正则表达式 + 捕获 rpm 的版本

我们想检查是否安装了以下 rpm 版本,所以我们这样做:

rpm -qa | egrep -c 'python-argcomplete-0.3.7-1|postgresql-libs-9.2.13-1.el7_1.x86_64'

因为更高版本的postgresql-libs也可以安装为 -postgresql-libs-9.2.19-1.el7_1.x86_64

然后我们尝试捕获两个版本,如下所示,但没有成功

 rpm -qa | egrep -c 'python-argcomplete-0.3.7-1|postgresql-libs-9.2.[^0-9]-1.el7_1.x86_64'

预期结果应该是 2 但我们得到 1

答案1

[^0-9]匹配任何字符外部0-9,因此您的正则表达式不会与您可能遇到的任何软件包版本匹配。如果您想匹配 13 或更高版本,则需要(1[3-9]|[2-9][0-9])(假设版本的最后一个组件不会达到 100)。

你可以rpm直接问:

rpm -q python-argcomplete-0.3.7 'postgresql-libs-9.2.*'

这将匹配任何 9.2 版本postgresql-libs,这可能不完全是您所追求的,但在许多情况下它应该足够好。

相关内容