计算终端输出中的行数


Answers:


475

将结果wc通过管道传递给-l行数)开关:

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

1
我一直在使用,grep "" -c但这要好得多:)
ninhenzo64

3
应该注意的是,这种将管道连接到wc的技巧将适用于任何输出,而不仅仅是grep输出。例如,可以将其与git diff结合使用。
Jason L.

1
为什么这是公认的答案?正如一些评论提到的那样,grep -c应该使用内置函数,而不是将输出通过管道传递到另一个程序。例如,您甚至不会使用Word以外的其他文本编辑器来更改Word文档中的字符,对吗?
Michael P

57

将EaterOfCode的注释放在此处作为答案。

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

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

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

编辑:

尽管此答案可能更短,因此可能看起来比接受的答案(使用wc)要好。我不再同意这一点。我想记住,您可以通过管道计数来计算行数,wc -l因为您可以将其与其他程序一起使用,这比以前还要有用grep


5

如果最后一行以换行符结尾,则将其传递给“ 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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.