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/
(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/

Poser une question


[..]
rajoute un autre tableau:
types_rencontres[type] = ""
for (mytype in types_rencontres)
--
Stephane
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/