计算终端输出中的行数

时间:2012-09-17 10:31:50

标签: bash terminal

在SO上找不到这个。我在终端中运行了以下命令:

>> grep -Rl "curl" ./

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

4 个答案:

答案 0 :(得分:403)

使用-l行计数)开关将结果传递给wc

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

答案 1 :(得分:53)

将EaterOfCode的评论作为答案。

  

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

因此命令和输出可能如下所示。

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

修改

虽然这个答案可能更短,因此可能看起来比接受的答案更好(即使用wc)。我不同意这个。我想要记住,你可以通过管道来计算行数wc -l更有用,因为你可以将它用于grep之外的其他程序。

答案 2 :(得分:2)

如果最后一行以换行符结尾,则将管道设置为“ wc”会更好(我知道在这种情况下,它将是)
但是,如果最后一行不以换行符结尾,则'wc -l'会返回错误的结果。

例如:

$ 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返回的结果更接近现实。

答案 3 :(得分:0)

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