如何调整“ dpkg -l”输出


10

我需要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

Answers:


18

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. 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.