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