[PERL] Création tableau 2D dynamique indicé

Fermé
trashvip Messages postés 27 Date d'inscription samedi 4 septembre 2004 Statut Membre Dernière intervention 10 mars 2010 - 15 févr. 2010 à 16:35
trashvip Messages postés 27 Date d'inscription samedi 4 septembre 2004 Statut Membre Dernière intervention 10 mars 2010 - 16 févr. 2010 à 10:00
Bonjour,

Voici mon souci :
Je souhaite créer un tableau 2D dynamique.
Mes données d'entrée sont issu d'un fichier "a.txt" qui contient un ensemble d'éléments (2 colonnes) comme suit: plusieurs séries de données dont la première colonne (A) est aléatoirement redondantes
A         B
------------
H1     5.34
H2     6.56
He4     8.99
He5     7.54
CL7     6.03
Br9    0.04

<== ligne vide délimitant le temps n°2

H2     9.44
H3     5.21
He5     1.11
CL7     4.69

<== ligne vide délimitant le temps n°3

etc....

Je souhaite remplir un tableau avec en "abscisse" le temps (temps 1 = première série, temps 2 = seconde série, etc....) et en ordonnée les noms des éléments comme H1, H2...CL7 sans doublon.

==>i.e : ajouter un élément à un nouveau tableau ssi il n'existe pas déjà dans ce "nouveau" tableau. Si il n'existe pas, le créer en bas de tableau.

Le problème est le suivant : comment remplir ce tableau indicé sans qu'il y ait de doublon et en ajoutant les valeurs au bon temps correspondant ?

Pour cet exemple, mon tableau de sortie devrait être comme suit :
A        B        C         D
-----------------------------
H1     5.34 
H2     6.56      9.44
He4     8.99
He5     7.54     1.11
CL7     6.03     4.69
Br9     0.04
H3      5.21


Colonne A = noms
Colonne B = temps 1
Colonne C = temps 2

Pouvez-vous m'aider pleazzz !!!??
J'espère avoir été clair (?), n'hésitez pas à me demander des précisions....
Merci d'avance.
A voir également:

2 réponses

dubcek Messages postés 18767 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 5 mars 2025 5 628
16 févr. 2010 à 07:32
hello
et avec awk ?
$ cat a1
H1     5.34
H2     6.56
He4     8.99
He5     7.54
CL7     6.03
Br9    0.04

H2     9.44
H3     5.21
He5     1.11
CL7     4.69

$ awk 'BEGIN{split("A,B,C,D,E,F,G,H",l,",")};NF {x[$1]=x[$1] "\t" $2;z[$1]++};END{a=0;for(n in x){if(z[n]>a)a=z[n]};for(b=1;b<=a+1;b++)printf l[b] "\t";print "";for(b=1;b<=a+1;b++)printf "--------";print ""; for(n in x) print n,x[n]}' a1
A	B	C	
------------------------
He4 	8.99
He5 	7.54	1.11
Br9 	0.04
H1 	5.34
H2 	6.56	9.44
H3 	5.21
CL7 	6.03	4.69
$ 
0
trashvip Messages postés 27 Date d'inscription samedi 4 septembre 2004 Statut Membre Dernière intervention 10 mars 2010 5
16 févr. 2010 à 10:00
Merci dubcek.
Comment je fais appel à "awk" dans un script PERL ?
Cdlt
0

Discussions similaires