Lin*_*ner 2 bash rpm version shell-script
我想从包名中只提取包的版本。假设我有一个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
Run Code Online (Sandbox Code Playgroud)
正如 thrig 所说,如果您在安装这些软件包的同一系统上提取值,则可以直接向 RPM 询问版本:
ver=$(rpm --queryformat="%{VERSION}" -q nfs-utils)
Run Code Online (Sandbox Code Playgroud)