[RESOLU]Compter le nombre de ligne d'un fichier

Compter le nombre de ligne d'un fichier [RESOLU] - Shell/Batch - Programmation

Marsh Posté le 06-01-2006 à 03:50:12    

Bonjour,
je cherche une commande permettant de renvoyer le nombre de ligne d'un fichier
Auriez vous une suggestion?  
 
pour l'instant j'utilise un

Code :
  1. cat fichier | while read line
  2. do
  3. #incermentation d'une variable
  4. done


mais je suis sur qu'il existe une commande pour renvoyer directement ça, non?

Message cité 1 fois
Message édité par yoshi42 le 07-01-2006 à 04:29:42
Reply

Marsh Posté le 06-01-2006 à 03:50:12   

Reply

Marsh Posté le 06-01-2006 à 05:03:59    

Il y a

wc -l fichier

mais ça affiche aussi le nom du fichier. Tu peux utiliser cut pour récupérer le premier champ.
 
 
 
Sinon

sed -n '$=' fichier

ou encore

awk 'END {print NR}' fichier

feront l'affaire.


Message édité par Pillow le 06-01-2006 à 05:08:16
Reply

Marsh Posté le 06-01-2006 à 10:08:58    

sinon un  
cat fic | wc -l


---------------
Du tofu en Alsace : www.tofuhong.com
Reply

Marsh Posté le 07-01-2006 à 01:25:17    

yoshi42 a écrit :

Bonjour,
je cherche une commande permettant de renvoyer le nombre de ligne d'un fichier
Auriez vous une suggestion?  
 
pour l'instant j'utilise un

Code :
  1. cat fichier | while read line
  2. do
  3. #incermentation d'une variable
  4. done


mais je suis sur qu'il existe une commande pour renvoyer directement ça, non?


 
Comme d'autres l'ont dit, wc marche très bien.
 
Je voudrais mettre un bémol sur ta structure parce que ça fonctionne nickel en ksh mais pas en sh ni bash. Pourquoi, j'en sais rien mais il se trouve que, à mon avis, le pipe génère un sous-processus dans lequel ta variable s'incrémente... mais à la fin du done, ben t'as plus de processus donc t'as plus de variable. Pourquoi ça fonctionne en ksh ? j'en sais rien. Mais j'ai déjà testé dans différents shells...
 
Tu peux, pour pallier ce pb, utiliser les parenthèses comme ceci

Code :
  1. cat fichier | ( while read line
  2. do
  3. #incermentation d'une variable
  4. done
  5. echo $variable
  6. )


 
Ou bien ne pas mettre de pipe, comme ceci

Code :
  1. exec 3<fichier
  2. while read line 0<&3
  3. do
  4. #incermentation d'une variable
  5. done
  6. echo $variable


 
 


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 07-01-2006 à 04:29:16    

Merci pour toutes ces infos  :jap:

Reply

Marsh Posté le 20-06-2021 à 18:01:11    

Il existe une commande DOS qui compte le nombre exact de lignes dans un ou plusieurs fichiers texte :
find /v /c "&*fake&*" *.txt >fichier_resultat.txt
La chaîne improbable "&*fake&*" permet de balayer toutes les lignes des fichiers, sans exception. Voir syntaxe de la commande find pour les autres options.

Reply

Marsh Posté le 20-06-2021 à 19:10:45    

15 ans de déterrage, pas mal...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed