Linux(Centos)中的软件包版本?

Linux(Centos)中的软件包版本?,centos,package,version,rpm,Centos,Package,Version,Rpm,我需要检索Linux(Centos)主机上安装的所有软件包的软件包版本。rpm-qa为我提供了所有已安装软件包的列表。 我知道rpm-qi“包名”给了我包信息。我试着从那里对包版本进行grep,并选择要显示的版本,但这会给一些包带来问题,因为有些包会随版本一起附加一些文本。下面是我的代码行:- rpm-qi“包名”| grep-w版本| awk'{print$3}' 是否有其他方法获取包版本-可能是从包名称本身获取?我们需要一个报告,其中一列包含包名,第二列包含版本。请帮忙 谢谢。您可以告诉rp

我需要检索Linux(Centos)主机上安装的所有软件包的软件包版本。rpm-qa为我提供了所有已安装软件包的列表。 我知道rpm-qi“包名”给了我包信息。我试着从那里对包版本进行grep,并选择要显示的版本,但这会给一些包带来问题,因为有些包会随版本一起附加一些文本。下面是我的代码行:- rpm-qi“包名”| grep-w版本| awk'{print$3}'

是否有其他方法获取包版本-可能是从包名称本身获取?我们需要一个报告,其中一列包含包名,第二列包含版本。请帮忙


谢谢。

您可以告诉rpm如何使用
--qf
标志构造其输出。它采用格式字符串作为参数

所以像下面这样的东西应该会让你得到你想要的

rt=$(ip route get 8.8.8.8 | awk 'NR==1 {print $NF}')
rpm -qa --qf "$tdydate,$rt,%{name},%{version}\n"

rpm-qa--qf'{name}\t%{version}\n'
?可以选择在末尾添加
| column-t
?您好,谢谢您的回复。实际上,我还在前两列中写入时间戳和主机的ip地址。以下是我的实际代码:-对于我,单位为美元(rpm-qa);do echo$tdydate“,”$(ip路由获取8.8.8 | awk'NR==1{print$NF}”),“$i”,“$(rpm-qi$i | grep-w版本| awk'{print$3}'| sed's/*/')>>$HOME/MyLog/installed_packages.csv;你能在这里帮忙吗。。。在第四列中,我需要这个版本。输出实际上是一个CSV文件;rpm-qa--qf“$tdydate,$rt,%{name},%{version}\n”或诸如此类的东西。这很有效。非常感谢您的快速回复,非常感谢。干杯