Je redirige les résultats de grep
vers un fichier, puis j'utilise cat
pour afficher son contenu à l'écran. Je veux savoir combien de lignes de résultats j'ai dans mon fichier de résultats, puis l'ajouter à un compteur.
Quelle sera la meilleure façon? Tout indicateur pertinent pour grep
ou cat
?
Si vous avez déjà collecté la sortie grep
dans un fichier, vous pouvez sortir une liste numérotée avec:
cat -n myfile
Si vous ne voulez que le nombre de lignes, faites simplement:
wc -l myfile
Il n'y a absolument aucune raison de le faire:
cat myfile | wc -l
... car cela fait inutilement des E/S (le cat
) que wc
doit répéter. De plus, vous avez deux processus où l'un suffit.
Si vous voulez grep
sur votre terminal et imprimer un décompte des correspondances à la fin, vous pouvez faire:
grep whatever myfile | tee /dev/tty | wc -l
Le -c
flag fera le travail. Par exemple:
grep -c ^ filename
comptera les lignes retournées par grep
.
Documenté dans la page de manuel :
-c, --count Supprime la sortie normale; à la place, imprimez un nombre de lignes correspondantes pour chaque fichier d'entrée
Utilisation
your_command | wc -l
Du manuel:
NAME
wc - print newline, Word, and byte counts for each file
...
-l, --lines
print the newline counts
Utilisation d'AWK pour compter les lignes d'un fichier
awk 'END {print NR}' filename
Vous pouvez utiliser wc -l pour obtenir le nombre de lignes.
Exemple:
$ cat foobar.txt | wc -l
N'utilisez pas wc: il ne compte pas la dernière ligne si elle n'est pas terminée par le symbole de fin de ligne (au moins sur mac). Utilisez-le à la place:
nbLines=$(cat -n file.txt | tail -n 1 | cut -f1 | xargs)