Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 27/08/2007, à 18:09

sarga6

Question AWK

Bonjour, dans le cadre d'un cours de programmation j'ai à réaliser un script awk effectuant un tri et des calculs simples.
L'énnoncé; sur base d'une liste (exemple) ; Ville;prénom;nombre
Hannut;Pol;1200
Hannut;Sabine;120
Jodoigne;Rudy;100
Wavre;Caroline;1500
Wavre;Didier;200
Wavre;Thomas;1200

Trier sur le champ ville les lignes ayant ce premier champ identique et additionner les nombre du 3e champ.
Résultat attendu ;
wavre 2900
1 Caroline 1500
2 Didier 200
3 Thomas 1200

Hannut 1320
1 Pol 1200
2 Sabine 120

Jodoigne 100
1 Rudy 100

voilà mon script awk ;

BEGIN {
FS=";";
cpta=0;
cptb=0;
cptc=0;
}
suma=0;
sumb=0;
sumc=0;


$1 == "Wavre" {
grpA[cpta] = $2 " " $3;
for(i=3;i<=NF;i++) { suma += $i; }
sommea[cpta] = suma;
cpta++;

}

$1 == "Hannut" {
grpB[cptb] = $2 " " $3;
for(i=3;i<=NF;i++) { sumb += $i; }
sommeb[cptb] = sumb;
cptb++;

}

$1 == "Jodoigne" {
grpC[cptc] = $2 " " $3;
for(i=3;i<=NF;i++) { sumc += $i; }
sommec[cptc] = sumc;
cptc++;

}

END { tota=0;
totb=0;
totc=0;

print"\n-----------------------"

for(i=0;i<cpta;i++)
{tota += sommea[i]}

print "\nwavre " tota "\t"

for(i=0;i<cpta;i++){print " " i+1 " " grpA[i] "\t" }




for(i=0;i<cptb;i++)
{totb += sommeb[i]}

print "\nHannut " totb "\t"

for(i=0;i<cptb;i++){print " " i+1 " " grpB[i] "\t" }



for(i=0;i<cptc;i++)
{totc += sommec[i]}

print "\nJodoigne " totc "\t"

for(i=0;i<cptc;i++){print " " i+1 " " grpC[i] "\t" }
print "\n------------------------"

}

Pour lancer le tri; awk -f script.awk liste.txt

Bon cela fonctionne.... MAIS l'astuce serait d'obtenir un awk pouvant servir pour d'autre liste de données de type : Ville;prénom;nombre. Et donc de passer outre les $1 == "tel nom de ville" .Je débute dans la progra sous awk et je ne parviens pas à trouver un moyen de déclarer mes champs subissant le tri d'une autre facon.
Un grand merci pour votre aide!

Hors ligne

#2 Le 27/08/2007, à 18:20

trucutu

Re : Question AWK

J'ai rien dis...

Dernière modification par trucutu (Le 27/08/2007, à 18:22)


La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !

Hors ligne