web-dev-qa-db-fra.com

compter le nombre de lignes dans la sortie du terminal

n'a pas pu trouver cela sur SO. J'ai lancé la commande suivante dans le terminal:

>> grep -Rl "curl" ./

et cela affiche la liste des fichiers contenant le mot-clé curl. Je veux compter le nombre de fichiers. La première façon dont je peux penser, est de compter le nombre de lignes dans la sortie qui est entré dans le terminal. Comment puis je faire ça?

228
roopunk

Dirigez le résultat vers wc à l'aide du commutateur -l ( line count ):

grep -Rl "curl" ./ | wc -l
417
João Silva

Mettre ici le commentaire de EaterOfCode comme réponse.

grep a lui aussi le drapeau -c qui ne fait que retourner le nombre

Ainsi, la commande et la sortie pourraient ressembler à ceci.

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

EDIT:

Bien que cette réponse puisse être plus courte et donc sembler meilleure que la réponse acceptée (c'est-à-dire en utilisant wc). Je ne suis plus d'accord avec cela. J'ai envie de me souvenir que vous pouvez compter les lignes en reliant wc -l est beaucoup plus utile car vous pouvez l'utiliser avec d'autres programmes que grep également.

55
JelteF

Piping to 'wc' pourrait être mieux SI la dernière ligne se termine par une nouvelle ligne (je sais que dans ce cas, ça le sera)
Cependant, si la dernière ligne ne se termine pas par une nouvelle ligne, 'wc -l' donne un résultat faux.

Par exemple:

$ echo "asd" | wc -l

Retournera 1 et

$ echo -n "asd" | wc -l

Retournera 0


Donc, ce que j'utilise souvent, c'est grep <anything> -c

$ echo "asd" | grep "^.*$" -c
1

$ echo -n "asd" | grep "^.*$" -c
1

Ceci est plus proche de la réalité que ce que wc -l retournera.

0
GCS