16
ack foo *

返回行列表:

bar.txt
28: this is foo stuff

dump.txt
12: results of foo

gobs.txt
1137: more lines with foo

ack -c -l 

返回

3

我的问题是,我怎样才能同时显示两者?我想要第一个示例中的行列表以及第二个示例匹配的行数。

4

2 回答 2

26

您可以使用

ack -hc-h是 的简写--no-filename)以获得总计数。

根据ack 文档/手册页

-c,--计数

抑制正常输出;而是打印每个输入文件的匹配行数。如果-l有效,它将仅显示每个文件的行数匹配的行数。如果没有-l,某些行数可能为零。

如果与-h( --no-filename)结合,ack则仅输出一个总数。

这对我有用(扩展@Jordan的答案)-

ack 'pattern' && ack -hc 'pattern'

或者,更好(IMO):

ack 'pattern'; ack -hc 'pattern'

据我了解,使用&&,第二个命令取决于第一个返回运行;无论如何,使用;代替只会一个接一个地运行它们。在这种情况下,我认为;是更合适的。

于 2016-07-15T04:24:21.697 回答
2

没有办法ack在一个命令中输出你想要的两个东西。获得所需内容的最简单方法是将两个命令与&&.

于 2012-11-14T06:51:21.690 回答