计算终端输出的行数

在SO上找不到这个。我在终端上执行了如下命令:

>> grep -Rl "curl" ./

这将显示出现关键字curl的文件列表。我想数一下文件的数量。我能想到的第一种方法,是计算终端输出的行数。我该怎么做呢?

328248 次浏览

使用-l (行数)开关将结果管道到wc:

grep -Rl "curl" ./ | wc -l

把EaterOfCode的注释放在这里作为答案。

Grep本身也有-c标志,它只返回计数

因此,命令和输出看起来像这样。

$ grep -Rl "curl" ./ -c
24

编辑:

虽然这个答案可能更短,因此可能看起来比公认的答案(即使用wc)更好。我不再同意这种说法了。我觉得记住你可以通过管道到wc -l来计数行数更有用,因为你可以在其他程序中使用它,而不是grep

如果最后一行以换行符结束(我知道在这种情况下,它会)< p>管道到'wc'可能会更好 但是,如果最后一行不以换行符结束,'wc -l'将返回假结果。< / p >

例如:

$ echo "asd" | wc -l

将返回1

$ echo -n "asd" | wc -l

将返回0


所以我经常使用grep <anything> -c

$ echo "asd" | grep "^.*$" -c
1


$ echo -n "asd" | grep "^.*$" -c
1

这比wc -l返回的结果更接近现实。

"abcd4yyyy" | grep 4 -c给出的计数为1