如何调整 dpkg -l 输出

如何调整 dpkg -l 输出

运行dpkg --list给了我这个输出

ii  ucf                                           3.0036                      all                         Update Configuration File(s): preserve user changes to config files
ii  udev                                          229-4ubuntu11               amd64                       /dev/ and hotplug management daemon
ii  ufw                                           0.35-0ubuntu2               all                         program for managing a Netfilter firewall
ii  uidmap                                        1:4.2-3.1ubuntu5            amd64                       programs to help use subuids
ii  unattended-upgrades                           0.90                        all                         automatic installation of security upgrades
ii  unzip                                         6.0-20ubuntu1               amd64                       De-archiver for .zip files

现在让我们来举个例子,我们来看一下第三排ufw

在第三列中,版本号被重新写入,我不希望它返回0.35-0ubuntu2。它应该只返回0.35-0 我该怎么做?

此外,这个额外的 ubuntu11 表示/意味着什么?

答案1

dpkg-query这是一项需要手动格式化所需输出的工作,在我的系统上

% dpkg-query -Wf '${Version}\n' ufw  
0.34~rc-0ubuntu2

在这种情况下,特定dpkg-query变量Version扩展为所提及的包的版本。ufw

现在要获取之前的部分ubuntu2,您可以设置之后的宽度Version,并用以下方式分隔;

% dpkg-query -Wf '${Version;9}\n' ufw
0.34~rc-0

但这并不可靠,因为长度显然会因不同的可能版本而有所不同;因此您可以利用一些文本处理,这里是grep-ping(您显然可以使用您选择的工具):

% dpkg-query -Wf '${Version}\n' ufw | grep -Po '.*?(?=ubuntu[^[:alpha:]]*$)'
0.34~rc-0

为了完整起见,如果您坚持使用dpkg -l,请使用一点awk

%  dpkg -l | awk '$2=="ufw" {sub("ubuntu[^[:alpha:]]*$", "", $3); print $3}'
0.34~rc-0

相关内容