quando o grep conta e quando não

quando o grep conta e quando não

A página de manual grepdiz:

-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 -cfornece 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.1tem 20 partidas, chown.1tem 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 -He -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 catmodo que grepnã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$ 

informação relacionada