Compteur de lignes dans un fichier

Fermé
willy - 8 mars 2011 à 15:16
 willy - 9 mars 2011 à 15:24
Bonjour,

comment compter les lignes d'un fichier bash sans utiliser la commande wc -l? svp il me faut faire un compteur et je coince dessus merci aux pros du bash!
A voir également:

1 réponse

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
8 mars 2011 à 15:37
Salut,

Avec :

- sed
- awk
- cat
- nl

?

Ou en bash pur ?

Je suppose qu'un "while read ligne; do..." couplé à un compteur à chaque boucle devrait le faire, non ?

0
En fait je l'ai fait avec cette commande NL=$(cat ./data|wc -l); qui marche mais on m'a demandé de le faire sous forme de compteur afin de lui passer un paramètre lors du lancement du script vous voyez un peu?
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
8 mars 2011 à 16:14
Jette un oeil à cette astuce : Comment lire un fichier ligne par ligne

Une fois que tu auras compris le système, il ne te restera plus qu'à rajouter un compteur dans ta boucle et d'afficher le résultat une fois la dernière ligne de lue...
0
Merci j'ai finalement pu le réaliser hier à l'aide d'une boucle for et d'une cdtion if çà marche comme je le souhaitais merci d'avoir répondu et de vs être gené pr mon problème.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
9 mars 2011 à 10:09
Happy for you ;-))

La cerise sûr le gâteau aurait été que tu postes la solution que tu as trouvée afin qu'elle serve à d'autres... ;-(
0
Au cas où quelqu'un aimerait l'utiliser voici un ptit script permettant de lire ligne par ligne un fichier. $5:car je mets le nbre de ligne lors du lancement de la commande.

for i in $(seq 1 $5);
do
if [[ ${i} -le $5 ]]; then
NL=$(($NL + 1 ));
fi
done
for ligne in 'cat votre_fichier';
do
somme=$(($somme + $ligne))
moyenne=$(($somme / $NL)) #ici j'utilise mon NL(Nbre de Lignes récupéré ds la boucle)
done
0