通过使用正则表达式 grep rpm -qi [package-name] 的输出来提取软件包版本

通过使用正则表达式 grep rpm -qi [package-name] 的输出来提取软件包版本

为什么正则表达式rpm -qi rpm-build | grep -E [[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+$返回

在此输入图像描述

?正则表达式不应该与句点匹配吗\.?如果是这样,为什么第一个匹配不是唯一返回的?

答案1

您还没有引用正则表达式,因此您的 shell 处理了两个反斜杠。结果grep看到这个正则表达式:[[:digit:]]+.[[:digit:]]+.[[:digit:]]+$确实匹配。引用一下表达式:

rpm -qi rpm-build | grep -E '[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+$'

如果您确实只想要来自 的版本信息rpm -q,请直接使用 请求--queryformat,并跳过 grep:

version=$(rpm -q --queryformat '%{VERSION}' rpm-build)

相关内容