在以下示例中:
apt-file search apache2.conf | grep -E "apache2.conf\b"
输出:
apache2: /etc/apache2/apache2.conf
apache2-doc: /usr/share/doc/apache2-doc/examples/apache2/apache2.conf.gz
dicoweb: /etc/dicoweb/apache2.conf
emboss-explorer: /etc/apache2/conf-available/emboss-explorer.apache2.conf
emboss-explorer: /etc/emboss-explorer/apache2.conf
icinga-cgi: /usr/share/doc/icinga-cgi/examples/apache2.conf
icinga-cgi: /usr/share/icinga/apache2.conf
icinga2-classicui: /etc/icinga2-classicui/apache2.conf
kopano-webapp-apache2: /etc/apache2/conf-available/kopano-webapp-apache2.conf
kopano-webapp-apache2: /etc/kopano/webapp/apache2.conf
lacme: /etc/lacme/apache2.conf
lemonldap-ng-handler: /etc/apache2/sites-available/handler-apache2.conf
libjs-twitter-bootstrap: /usr/share/twitter-bootstrap/apache2.conf
liblemonldap-ng-manager-perl: /etc/apache2/sites-available/manager-apache2.conf
liblemonldap-ng-portal-perl: /etc/apache2/sites-available/portal-apache2.conf
mirmon: /usr/share/doc/mirmon/examples/mirror-apache2.conf
nagios3-cgi: /usr/share/nagios3-cgi/apache2.conf
oar-restful-api: /usr/share/oar/oar-api/apache2.conf
octopussy: /etc/octopussy/apache2.conf
spip: /usr/share/doc/spip/apache2.conf
为什么不grep
理解\b
as 单词边界并合并这一行:
apache2-doc: /usr/share/doc/apache2-doc/examples/apache2/apache2.conf.gz
使用和不使用 的扩展 ( -E
) 版本都会出现相同的结果grep
。
答案1
A字边界是从单词字符到非单词字符的转换 - 这与从单词字符到空格的转换不同。
从man grep
:
单词组成字符是字母、数字和下划线。
因为.
是非单词字符conf\b
匹配“conf
后跟.
”。
答案2
@steeldriver 已经解释了这\b
是怎么回事,我只是添加它apt-file search
本身支持扩展正则表达式的选项-x
,并且您可以查找路径结尾与apache2.conf
:
apt-file search -x 'apache2\.conf$'
你还可以这样做:
apt-file search -x 'apache2\.conf(\s|$)'
要查找以空格结尾apache2.conf
或包含apache2.conf
后跟空格的路径,但我怀疑这会产生任何影响,因为我不希望apt-file
数据库中的任何文件包含apache2.conf<whitespace>
.