GNT sans publicité, site mobile, fonctionnalitées exclusives...

Awk, tableaux associatifs à double entrée

Le
Jean-Philippe Caruana
bonjour, une question AWK
(est-ce bien le bon forum ?)

je suis sous gawk version windows (je ne peux pas utiliser une version +
unix, même pas cygwin)

je désire me servir de tableaux associatifs à double entrée dans des
boucles for

mon but est d'avoir une structure de données dynamique en fonction de ce
que je donne dans ma variable 'types' du BEGIN

le problème est que la boucle for du END passe plusieurs fois sur des
mêmes valeurs de la var mytype, mais une seule fois par couple clef/valeur

comment faire pour ne passer qu'une fois par clef ?
mon split n'est pas suffisant ? faut-iol 'spliter' avant (mais comment) ?

(je ne désire pas faire cela en perl)

DEBUT EXTRAITS SCRIPT
BEGIN { types = "PlatineRG|PlatineRPV|Trafic|Vatel" }

$1 ~ types {
type = $1
#gsub("","",type)
aig[type,"entree"] += $3
aig[type,"rejets"] += $5
aig[type,"sortie"] += $6
}

END {
for (mytype in aig){
split(mytype,aig2,SUBSEP)
type = aig2[1]
aig[type,"ecarts"] = aig[type,"entree"] - aig[type,"sortie"] -
aig[type,"rejets"]
aigSomme["entree"] += aig[type,"entree"]
aigSomme["sortie"] += aig[type,"sortie"]
aigSomme["rejets"] += aig[type,"rejets"]
aigSomme["ecarts"] += aig[type,"ecarts"]
print type "\t" aig2[2]
}

# une série de print formattés correctement
# et utilisant une boucle for identique
}
FIN EXTRAITS SCRIPT

je ne trouve aucune réponse à ce problème dans "sed et awk -
programmation avancée" chez o'reilly : ce (très bon) livre traite des
tableaux associatifs, des tableaux à double entrée (mais à indices
numériques), mais pas de mon cas : les tableaux associatifs à double entrée

si quelqu'un peut m'éclairer

--
jpc
http://www.enstimac.fr/~caruana/
Lire les 2 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Stephane Chazelas
Le #500810
2004-09-15, 15:14(+02), Jean-Philippe Caruana:
[..]
$1 ~ types {
type = $1
#gsub("n","",type)
aig[type,"entree"] += $3
aig[type,"rejets"] += $5
aig[type,"sortie"] += $6


rajoute un autre tableau:

types_rencontres[type] = ""

}

END {
for (mytype in aig){


for (mytype in types_rencontres)

split(mytype,aig2,SUBSEP)
type = aig2[1]
aig[type,"ecarts"] = aig[type,"entree"] - aig[type,"sortie"] -
aig[type,"rejets"]
aigSomme["entree"] += aig[type,"entree"]
aigSomme["sortie"] += aig[type,"sortie"]
aigSomme["rejets"] += aig[type,"rejets"]
aigSomme["ecarts"] += aig[type,"ecarts"]
print type "t" aig2[2]
[...]


--
Stephane

Jean-Philippe Caruana
Le #500809
rajoute un autre tableau:

types_rencontres[type] = ""
...

for (mytype in types_rencontres)


excellente idée ca a bien l'air de fonctionner. merci !
(et simple avec cela... je m'en veux de ne pas y avoir pensé + tot.)

--
jpc
http://www.enstimac.fr/~caruana/

Publicité
Suivre les réponses
Poster une réponse
Anonyme