Compteur de lignes dans un fichier

willy -  
 willy -
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!

1 réponse

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    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
    1. willy
       
      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
    2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      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
    3. willy
       
      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
    4. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      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
    5. willy
       
      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