Как настроить 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
задан 10 January 2017 в 11:43

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
0
ответ дан 8 December 2019 в 07:06

Другие вопросы по тегам:

Похожие вопросы: