尝试使用dpkg
和egrep
命令列出名称以q
.已经尝试过:
dpkg -l | egrep -l q
dpkg -l | egrep -l ^q
dpkg -l | egrep q
dpkg -l | grep q
出了什么问题?
答案1
使用--get-selections
而不是-l
选项:
dpkg --get-selections |grep ^q
或者使用awk
更改列顺序:
dpkg -l |awk '{print $2 , $3 "\t\t" $1}' | grep ^q
答案2
您实际上根本不需要 grep (或 egrep):该dpkg -l
命令接受一个模式:
-l, --list package-name-pattern...
List packages matching given pattern.
请注意,这package-name-pattern
是一个全局模式而不是正则表达式。所以
dpkg -l 'q*'
如果您希望以更可配置的格式输出(例如,仅二进制包名称),那么您可以使用dpkg-query
ex.
dpkg-query -Wf '${binary:Package}\n' 'q*'
答案3
egrep 的正则表达式与 的预期输出不匹配dpkg -l
。如果您希望保持与 相同的输出格式dpkg -l
,其中包括包的状态、版本和描述,则需要更改正则表达式以匹配预期格式:行开头的三个字符(描述系统上包的状态)以及包名称前的空格。
在表达式 中^... [qQ]
,^
表示从行首开始匹配,...
表示匹配后跟空格的任意三个字符,然后q
匹配以大写或小写“q”开头的包(在 Ubuntu 上包只能是小写,但也有可能是不遵循这些规则的自定义包)。
$ dpkg -l | egrep '^... [qQ]'
ii qdbus 4:4.8.7+dfsg-7ubuntu1 amd64 Qt 4 D-Bus tool
ii qemu-block-extra:amd64 1:2.11+dfsg-1ubuntu7.19 amd64 extra block backend modules for qemu-system and qemu-utils
...