На странице руководства grep
написано:
-c
,--count
: Подавить обычный вывод; вместо этого вывести количество совпадающих строк для каждого входного файла.
данный:
# grep -R -c sleeping /proc/*/status
Я получаю список, а не количество (как в случае с):
# grep -R sleeping /proc/*/status | wc -l
Что случилось с grep -c
? Что я делаю (в командах выше), чтобы не получать от него подсчет и вместо этого использовать wc -l
)?
решение1
grep -c
выдает количество совпадающих строк для каждого входного файла отдельно (именно это и говорится в вашей цитате из руководства):
$ grep -c user chmod.1 chown.1
chmod.1:20
chown.1:5
Итак, chmod.1
20 матчей, chown.1
5.
Список имен файлов здесь работает так же, как и в обычном grep, т.е. имена файлов перечисляются, если входных файлов больше одного, но не если только один. По крайней мере в GNU grep это можно изменить с помощью флагов -H
и -h
.
Так,
$ grep -c user chmod.1
20
$ grep -cH user chmod.1
chmod.1:20
решение2
Для общего количества используйте, возможно, не такое уж бесполезное использование, cat
чтобы grep
не сообщать количество по каждому файлу
-bash-4.2$ cat /proc/*/status | grep -c sleeping
171
-bash-4.2$ grep sleeping /proc/*/status | wc -l
171
-bash-4.2$