Linux

grep 正則表達式 + 擷取 rpm 的版本

  • January 26, 2022

我們想檢查是否安裝了以下 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

[^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,這可能不是您所追求的,但在許多情況下它應該足夠好。

引用自:https://unix.stackexchange.com/questions/688025