web-dev-qa-db-fr.com

Comment compter les lignes dans un document?

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?

944
Alucard

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
1790
user85509

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 ...

132
Lauro Oliveira
wc -l <file.txt>

Ou

command | wc -l
69
John Kugelman

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
42
ghostdog74

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.

25
theunamedguy

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 {} +
22
storen

Utilisez wc:

wc -l <filename>
21
Vivin Paliath

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
14
ggb667

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.

8
decimal

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.

7
Buttle Butkus

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;)

5
talsibony

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.

5
Yogesh
wc -l file.txt | cut -f3 -d" "

Renvoie uniquement le nombre de lignes

4
Umur Kontacı
cat file.log | wc -l | grep -oE '\d+'
  • grep -oE '\d+': Pour renvoyer les nombres ONLY.
4
AechoLiu

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
3
jwebuser

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.

3
tk3000

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"

2
Konstantin F

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

https://github.com/danschumann/gimme-lines/tree/master

1
Funkodebat

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.

1
Majid Azimi