Bash

使用 bash 僅提取包名稱的版本部分

  • February 9, 2017

我想從包名中只提取包的版本。假設我有一個var包含包名的變數(例如:)var="nfs-utils-1.2.6-6.fc17.i686.rpm"。提取的字元串是1.2.6-6. 用於解析的方法可以是任何東西(regex、awk、cut)。

編輯:在上面的範例中,我實際上想提取1.2.6

這不是很便攜,但對於這種特定情況,這grep是可行的:

echo $var | egrep -o '[0-9].*-[0-9]'
1.2.6-6

正如 thrig 所說,如果您在安裝這些軟體包的同一系統上提取值,您可以直接向 RPM 詢問版本:

ver=$(rpm --queryformat="%{VERSION}" -q nfs-utils)

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