Shell Commande sed dans boucle

Résolu
ghani -  
 ghani -
Bonjour,

voila je bloque depuis 1h sur un exercice et je ne trouve tjrs pas la solution, merci de m'aider si possible

Exo : Des enseignant utilisent des fichier csv pour communiquer les notes de leurs étudiants.
dans le fichier csv les note sont sous la forme : Nom;Prenom;note1;note2;note3;......sur chaque ligne.
Ecrire un script moyennes qui affiche les moyennes sous forme: Prenom Nom moyenne.

Merci de m'aider
ps 2eme parie de la qst je ne comprends pas pourquoi en faisant

cat note.txt | { while read ligne
do
sed 's/^\([^;]*\);\([^;]*\);.*$/\2 \1/'
echo "****fin de la ligne****"
done ;}

je me retrouve avec :
Albert Camus
george clooney
Pierre LePon
****fin de la ligne****

et nom pas "****fin de la ligne****" a la fin de chaque ligne
merci de votre aide....
Mr.Tomson

7 réponses

  1. ghani
     
    Salut, j'espère avoir des reponse plus constructifs, et non tu vois bien que j'ai essayé de trouver la solution par moi même.
    0
  2. Utilisateur anonyme
     
    désolé, mais la charte est claire....
    0
  3. ghani
     
    ah mais je ne savais pas que la charte interdisait d'exposer des problèmes,
    et sinon une idée pour la seconde partie avec la commande sed dans la boucle pourquoi je retrouve ce résultat.
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Utilisateur anonyme
     
    "...ah mais je ne savais pas que la charte interdisait d'exposer des problèmes, ..."

    ne pas confondre tes exercices et des vrais problèmes.
    0
  6. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    Essaies plutôt :

    while read ligne
    do
    sed 's/^\([^;]*\);\([^;]*\);.*$/\2 \1/' <<<"${ligne}"
    echo "****fin de la ligne****"
    done < note.txt
    0
    1. ghani
       
      Salut,
      je te remercie c'etait ca la solution
      0
  7. ghani
     
    Voici , j'ai fini par trouver la solution de l'exercice ,
    encore merci a zipe31,

    #! /bin/sh
    FILE=$1
    IFS=';'

    while read nom prenom notes; do
    set $notes
    n=$#
    s=0
    for c in "$@"; do
    s=$((s+c))
    done
    echo $prenom $nom $((s/n))
    done < $FILE
    0