web-dev-qa-db-fra.com

Comment puis-je compter le nombre de lignes d'un fichier avec des outils communs?

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?

136
k-man

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
159
JRFerguson

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

67
peri4n

Utilisation

your_command | wc -l

Du manuel:

NAME
       wc - print newline, Word, and byte counts for each file

...

       -l, --lines
          print the newline counts
21
aioobe

Utilisation d'AWK pour compter les lignes d'un fichier

awk 'END {print NR}' filename
5
Vivek parikh

Vous pouvez utiliser wc -l pour obtenir le nombre de lignes.

Exemple:

$ cat foobar.txt | wc -l
4
Steven Bakhtiari

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)
0
ling