Shell Commande sed dans boucle

Résolu/Fermé
ghani - 2 janv. 2011 à 21:18
 ghani - 5 janv. 2011 à 23:40
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

A voir également:

7 réponses

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
Utilisateur anonyme
2 janv. 2011 à 21:42
désolé, mais la charte est claire....
0
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
2 janv. 2011 à 21:48
"...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
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
2 janv. 2011 à 22:53
Salut,

Essaies plutôt :

while read ligne
do
sed 's/^\([^;]*\);\([^;]*\);.*$/\2 \1/' <<<"${ligne}"
echo "****fin de la ligne****"
done < note.txt
0
Salut,
je te remercie c'etait ca la solution
0
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