J'ai des lignes comme celles-ci et je veux savoir combien de lignes j'ai réellement ...
09:16:39 AM all 2.00 0.00 4.00 0.00 0.00 0.00 0.00 0.00 94.00
09:16:40 AM all 5.00 0.00 0.00 4.00 0.00 0.00 0.00 0.00 91.00
09:16:41 AM all 0.00 0.00 4.00 0.00 0.00 0.00 0.00 0.00 96.00
09:16:42 AM all 3.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 96.00
09:16:43 AM all 0.00 0.00 1.00 0.00 1.00 0.00 0.00 0.00 98.00
09:16:44 AM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
09:16:45 AM all 2.00 0.00 6.00 0.00 0.00 0.00 0.00 0.00 92.00
Existe-t-il un moyen de tous les compter en utilisant les commandes linux?
Utilisez wc
:
wc -l <filename>
Ceci affichera le nombre de lignes dans <filename>
:
$ wc -l /dir/file.txt
3272485 /dir/file.txt
Ou, pour omettre le <filename>
du résultat, utilisez wc -l < <filename>
:
$ wc -l < /dir/file.txt
3272485
Vous pouvez également diriger les données vers wc
:
$ cat /dir/file.txt | wc -l
3272485
$ curl yahoo.com --silent | wc -l
63
Pour compter toutes les lignes, utilisez:
$ wc -l file
Pour filtrer et compter uniquement les lignes avec un motif, utilisez:
$ grep -w "pattern" -c file
Ou utilisez -v pour inverser la correspondance:
$ grep -w "pattern" -c -v file
Reportez-vous à la page de manuel grep pour consulter les arguments -e, -i et -x ...
wc -l <file.txt>
Ou
command | wc -l
il y a beaucoup de façons. utiliser wc
en est un.
wc -l file
d'autres incluent
awk 'END{print NR}' file
sed -n '$=' file
(GNU sed)
grep -c ".*" file
L'outil wc
est le "compteur de mots" dans les systèmes d'exploitation UNIX et de type UNIX. Vous pouvez également l'utiliser pour compter les lignes d'un fichier en ajoutant l'option -l
, donc wc -l foo
. comptera le nombre de lignes dans foo
. Vous pouvez également diriger la sortie d'un programme comme celui-ci: ls -l | wc -l
, qui vous indiquera le nombre de fichiers contenus dans le répertoire actuel.
Si vous souhaitez vérifier la ligne totale de tous les fichiers d'un répertoire, vous pouvez utiliser find et wc:
find . -type f -exec wc -l {} +
Utilisez wc
:
wc -l <filename>
Si tout ce que vous voulez, c'est le nombre de lignes (et non le nombre de lignes et le nom de fichier stupide qui revient):
wc -l < /filepath/filename.ext
Comme mentionné précédemment, ceux-ci fonctionnent également (mais sont inférieurs pour d'autres raisons):
awk 'END{print NR}' file # not on all unixes
sed -n '$=' file # (GNU sed) also not on all unixes
grep -c ".*" file # overkill and probably also slower
Utilisez nl
comme ceci:
nl filename
De man nl
:
Ecrivez chaque fichier sur la sortie standard en ajoutant des numéros de ligne. Sans FILE, ou lorsque FILE est -, lit l'entrée standard.
J'ai utilisé ceci:
cat myfile.txt | wc -l
Je le préfère à la réponse acceptée car il n'imprime pas le nom de fichier et vous n'avez pas besoin d'utiliser awk
pour résoudre ce problème. Réponse acceptée:
wc -l myfile.txt
Mais je pense que le meilleur est la réponse de GGB667:
wc -l < myfile.txt
Je vais probablement l'utiliser à partir de maintenant. C'est légèrement plus court que mon chemin. Je suis mon ancienne façon de le faire au cas où quelqu'un le préférerait. Le résultat est le même avec ces deux méthodes.
J'ai vu cette question alors que je cherchais un moyen de compter plusieurs lignes de fichiers, donc si vous voulez compter plusieurs lignes de fichiers d'un fichier .txt, vous pouvez le faire,
cat *.txt | wc -l
il fonctionnera également sur un fichier .txt;)
Ci-dessus, la méthode recommandée, mais la commande "cat" peut également être utile:
cat -n <filename>
Vous montrera tout le contenu du fichier avec les numéros de ligne.
wc -l file.txt | cut -f3 -d" "
Renvoie uniquement le nombre de lignes
cat file.log | wc -l | grep -oE '\d+'
grep -oE '\d+'
: Pour renvoyer les nombres ONLY.Ou comptez toutes les lignes des sous-répertoires avec un modèle de nom de fichier (par exemple, des fichiers journaux avec des horodatages dans le nom du fichier):
wc -l ./**/*_SuccessLog.csv
Redirection/Piping de la sortie du fichier vers wc -l
devrait suffire, comme suit:
cat /etc/fstab | wc -l
qui fournirait alors le non. de lignes seulement.
compter le nombre de lignes et stocker le résultat dans la variable utiliser cette commande:
count=$(wc -l < file.txt) echo "Number of lines: $count"
Je sais que c'est vieux mais quand même: Compter les lignes filtrées
Mon fichier ressemble à:
Number of files sent
Company 1 file: foo.pdf OK
Company 1 file: foo.csv OK
Company 1 file: foo.msg OK
Company 2 file: foo.pdf OK
Company 2 file: foo.csv OK
Company 2 file: foo.msg Error
Company 3 file: foo.pdf OK
Company 3 file: foo.csv OK
Company 3 file: foo.msg Error
Company 4 file: foo.pdf OK
Company 4 file: foo.csv OK
Company 4 file: foo.msg Error
Si je veux savoir combien de fichiers sont envoyés, cliquez sur OK:
grep "OK" <filename> | wc -l
OR
grep -c "OK" filename
Je viens de créer un programme pour le faire (avec node
)
npm install gimme-lines
gimme-lines verbose --exclude=node_modules,public,vendor --exclude_extensions=html
Comme d'autres l'ont dit, wc -l
est la meilleure solution, mais vous pouvez utiliser Perl pour référence future:
Perl -lne 'END { print $. }'
$.
contient le numéro de ligne et END
le bloc sera exécuté à la fin du script.