On Sun, 14 Jan 2018, Vasyl Vavrychuk wrote:
Hi, John, On Sun, Jan 14, 2018 at 8:48 AM, john doe <johndoe65534@mail.com> wrote:On 1/14/2018 7:28 AM, john doe wrote: $ dpkg-query -W -f='${db:Status-Abbrev}${binary:Package}\n' awk git gawk cmake 2>&1 | awk '!/^ii/ || !/^un/{print $6}' git gawk cmakeI also tried to parse stderr, but then I realized that relying on the output dpkg-query: no packages found matching is not correct since it might be localized and is not suitable for scripting.
You could just discard the stderr, and take the complement of the hits
from dpkg-query, relative to the supplied arguments:
show-installed () {
dpkg-query -W -f='${db:Status-Abbrev}${binary:Package}\n' "$@" |
awk '/^ii/ {print $2}'
}
show-absent () {
universe=("$@")
diff <( IFS=$'\n' ; sort <<<"${universe[*]}" ) \
<( show-installed "${universe[@]}" 2>/dev/null ) |
sed -n 's/^< //p'
}
$ dpkg-query -l not-a-real-package exim4 mksh xorg bash xterm chromium
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-======================-================-================-=================================================
ii bash 4.4-5 amd64 GNU Bourne Again SHell
un exim4 <none> <none> (no description available)
ii mksh 54-2+b4 amd64 MirBSD Korn Shell
ii xorg 1:7.7+19 amd64 X.Org X Window System
ii xterm 327-2 amd64 X terminal emulator
dpkg-query: no packages found matching not-a-real-package
dpkg-query: no packages found matching chromium
$ show-installed !*
show-installed not-a-real-package exim4 mksh xorg bash xterm chromium
dpkg-query: no packages found matching not-a-real-package
dpkg-query: no packages found matching chromium
bash
mksh
xorg
xterm
$ show-absent !*
show-absent not-a-real-package exim4 mksh xorg bash xterm chromium
chromium
exim4
not-a-real-package
(It is above my pay grade to tell whether "sort" needs its flags
tweaked to sort identically to dpkg on arbitary package names.)