A página de manual grep
diz:
-c
,--count
: Suprime a saída normal; em vez disso, imprima uma contagem de linhas correspondentes para cada arquivo de entrada.
dado:
# grep -R -c sleeping /proc/*/status
Recebo uma lista, não uma contagem (como acontece com):
# grep -R sleeping /proc/*/status | wc -l
O que há com grep -c
? O que estou fazendo (nos comandos acima) para não contar e ter que usar wc -l
)?
Responder1
grep -c
fornece a contagem de linhas correspondentes para cada arquivo de entrada separadamente (é o que diz sua citação do manual):
$ grep -c user chmod.1 chown.1
chmod.1:20
chown.1:5
Então chmod.1
tem 20 partidas, chown.1
tem 5.
A listagem de nomes de arquivos funciona aqui de forma semelhante a um grep normal, ou seja, os nomes dos arquivos são listados se houver mais de um arquivo de entrada, mas não se houver apenas um. Pelo menos no GNU grep, isso pode ser modificado com os sinalizadores -H
e -h
.
Então,
$ grep -c user chmod.1
20
$ grep -cH user chmod.1
chmod.1:20
Responder2
Para uma contagem total, use um uso talvez não tão inútil de cat
modo que grep
não relate contagens por arquivo
-bash-4.2$ cat /proc/*/status | grep -c sleeping
171
-bash-4.2$ grep sleeping /proc/*/status | wc -l
171
-bash-4.2$