我需要 dpkg -l 返回的字段以制表符分隔,但没有标题和“ii”列。
默认输出:
$ dpkg -l grep
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 grep 2.16-1 amd64 GNU grep, egrep and fgrep
我的期望输出:
grep 2.16-1 amd64 GNU grep, egrep and fgrep
答案1
dpkg
不适合您的情况,请改用该dpkg-query
命令。使用dpkg-query
您可以选择所需的字段类型(以及可选的分隔符):
$ dpkg-query -W -f='${binary:Package}\t${Version}\t${Architecture}\t${binary:Summary}\n' grep
grep 2.16-1 amd64 GNU grep, egrep and fgrep
查看 dpkg-query手册页更多选项(尤其是-f --showformat
选项)
以供参考:
-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.
-f, --showformat=format
This option is used to specify the format of the output --show
will produce. The format is a string that will be output for
each package listed.
In the format string, “\” introduces escapes:
\n newline
\r carriage return
\t tab
“\” before any other character suppresses any special meaning of
the following character, which is useful for “\” and “$”.
Package information can be included by inserting variable refer‐
ences to package fields using the syntax “${field[;width]}”.
Fields are printed right-aligned unless the width is negative in
which case left alignment will be used. The following fields are
recognized but they are not necessarily available in the status
file (only internal fields or fields stored in the binary pack‐
age end up in it):
Architecture
Bugs
Conffiles (internal)
Config-Version (internal)
Conflicts
Breaks
Depends
Description
Enhances
Essential
Filename (internal, front-end related)
Homepage
Installed-Size
MD5sum (internal, front-end related)
MSDOS-Filename (internal, front-end related)
Maintainer
Origin
Package
Pre-Depends
Priority
Provides
Recommends
Replaces
Revision (obsolete)
Section
Size (internal, front-end related)
Source
Status (internal)
Suggests
Tag (usually not in .deb but in repository Packages files)
Triggers-Awaited (internal)
Triggers-Pending (internal)
Version
The following are virtual fields, generated by dpkg-query from
values from other fields (note that these do not use valid names
for fields in control files):
binary:Package
binary:Summary
db:Status-Abbrev
source:Package
source:Version
The default format string is “${binary:Package}\t${Version}\n”.
Actually, all other fields found in the status file (i.e. user
defined fields) can be requested, too. They will be printed as-
is, though, no conversion nor error checking is done on them.
binary:Package is a special field that will print the package
name with an architecture qualifier (like "libc6:amd64") if the
package has a Multi-Arch field with a value of same, and as such
its name could be ambiguous.