Хотя выбор полей из выхода dpkg -l, безусловно, работает, более фундаментальная команда dpkg-query позволяет настраивать выходные поля и формат, не прибегая к дополнительным средствам обработки текста. Как это бывает, plain
dpkg-query -W
без строкой форматированного текста дает точно список имен пакетов и версий пакетов (эквивалентно dpkg -l | awk '{print $2,$3}'), как отмечено в man dpkg-query:
-W, --show [package-name-pattern...]
Just like the --list option this will list all packages matching
the given pattern. However the output can be customized using
the --showformat option. The default output format gives one
line per matching package, each line having the name (extended
with the architecture qualifier for Multi-Arch same packages)
and installed version of the package, separated by a tab.
Если вы хотите, чтобы более красивый вывод был более похожим на dpkg -l, вы могли бы использовать что-то вроде
dpkg-query -W -f='${binary:Package;-25}\t${Version}\n'
для выравнивания по левому краю имен пакетов в поле шириной 25 столбцов, или
dpkg-query -W -f='${db:status-abbrev}\t${binary:Package;-25}\t${Version}\n'
, чтобы включить флаги состояния ii и т.д. в начале каждой строки.