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 12/02/2015, à 10:10

Miel56

Script bash pour correspondance entre fichiers .DOT (GraphViz)

Bonjour,
je ne sais pas si je suis dans la bonne section mais bon, je tente quand même.
Je suis en train de travailler sur un logiciel qui s'appelle "Graphviz" qui me permet de generer des graphs couleurs :
Exemple :
c10OQyZsawoGTsvoc8h4dFifGEjOJi1MwZI5Lf7JXWKW5Lw8OcbAVObAwdzQWr6t-dot-s-.png

ce programme fonctionne avec l'aide d'un script sh , et d'un fichier CACSCOlor2 contenant les utilisateurs et leur couleur(correspondant a un groupe).
Exemple du contenu du fichier CACSColor2 :

LACROIX, Gilles" [style=filled,color=green
RODRIGUEZ, Mohammed" [style=filled,color=blue

Ces couleurs correspondent a des groupes que l'on trouve dans un fichier CACSColor :
LACROIX Gilles H 1967 MCF OUI COM Telecom Nantes
RODRIGUEZ Mohammed H 1978 IAS St Cyr

Le groupe est defini en 7eme élément : COM & IAS.
Ce que j'aimerais faire, c'est de mettre dans un fichier CASGroupe, une correspondance de groupe (c'est a dire yellow=IAS par exemple) et que lorsque l'utilisateur rentre un groupe sa lui met directement sa couleur.
Je suis disponible toute la journée pour vous apporter plus de réponses.
Cordialement,
Mathieu

Hors ligne

#2 Le 13/02/2015, à 10:42

credenhill

Re : Script bash pour correspondance entre fichiers .DOT (GraphViz)

hello
si j'ai tout compris

$ more C*
::::::::::::::
CACSColor2 
::::::::::::::
LACROIX, Gilles" [style=filled,color=green
RODRIGUEZ, Mohammed" [style=filled,color=blue
::::::::::::::
CACSColor 
::::::::::::::
LACROIX Gilles H 1967 MCF OUI COM Telecom Nantes
RODRIGUEZ Mohammed H 1978 IAS St Cyr
::::::::::::::
CASGroupe
::::::::::::::
yellow=IAS
$ 
$ awk -F "[ ,=\"]" 'ARGIND==1 {t[$2]=$1} ARGIND==2 {NF<8? c=5: c=7; n[$1, $2]=$c} ARGIND==3 && x=t[n[$1, $3]] {sub("lor=.*$", "lor=" x); print}'  CASGroupe  CACSColor  CACSColor2 
RODRIGUEZ, Mohammed" [style=filled,color=yellow

Hors ligne

#3 Le 16/02/2015, à 11:36

Miel56

Re : Script bash pour correspondance entre fichiers .DOT (GraphViz)

Bonjour,
j'ai essayé votre solution, mais cela m'a passé tout mes noms avec la couleur ROSSI ^^'
Je pense qu'il doit y avoir un soucis dans les arguments je vais regarder voir ce qui vas pas ^^
Merci .

Hors ligne

#4 Le 16/02/2015, à 12:12

credenhill

Re : Script bash pour correspondance entre fichiers .DOT (GraphViz)

Miel56 a écrit :

LACROIX Gilles H 1967 MCF OUI COM Telecom Nantes
RODRIGUEZ Mohammed H 1978 IAS St Cyr

Le groupe est defini en 7eme élément : COM & IAS.

ce n'est pas toujours le 7ème élément

Hors ligne

#5 Le 16/02/2015, à 12:18

Miel56

Re : Script bash pour correspondance entre fichiers .DOT (GraphViz)

Pensez vous que je dois modifier mon CACSColor afin que le groupe corresponde a chaque fois au 7eme element ?

Hors ligne

#6 Le 16/02/2015, à 13:24

credenhill

Re : Script bash pour correspondance entre fichiers .DOT (GraphViz)

j'ai mis un test {NF<8? c=5: c=7; n[$1, $2]=$c} pour prendre  le champ 7 ou 5 d'après l'exemple
ce n'est peut-être plus vrai avec tes données

Hors ligne

#7 Le 16/02/2015, à 14:58

Miel56

Re : Script bash pour correspondance entre fichiers .DOT (GraphViz)

Lorsque je lance cette commande, et que je lance mon script, j'ai la liste suivante qui apparait :
LE PENNEC, Christophe" [style=filled,color=ROSSI
LACROIX, GIlles"[style=filled,color=ROSSI
RODRIGUEZ, Mohammed"[style=filled,color=ROSSI

Alors que pourtant dans mon fichier CACSColor, je me suis bien arrangé pour mettre toutes les données au même niveau (8eme identation c=8)

Hors ligne

#8 Le 16/02/2015, à 16:33

credenhill

Re : Script bash pour correspondance entre fichiers .DOT (GraphViz)

si c'est en col .8 dans CACSColor

 awk -F "[ ,=\"]" 'ARGIND==1 {t[$2]=$1} ARGIND==2 {n[$1, $2]=$8} .....

Dernière modification par credenhill (Le 16/02/2015, à 16:35)

Hors ligne

#9 Le 17/02/2015, à 10:51

Miel56

Re : Script bash pour correspondance entre fichiers .DOT (GraphViz)

Bonjour,
j'ai donc essayé. DOnc voici le contenu de mon CACSGroupe.sh :

##Correspondance couleurs
yellow=MOCS
cyan=IAS
green=COM

awk -F "[ ,=\"]" 'ARGIND==1 {t[$~]=$1} ARGIND==2 {NF<8? c=5: c=7; n[$1, $2]=$c} ARGIND==3 && x=t[n[$1, $3]] {sub("lor=*.$", "lor=" x); print}' CACSColor CACSColor2.
Mais le problème c'est que je n'ai aucune sorite.
J'ai onc ajouté a la fin de la ligne > tri.sh , mais cela 'a rien changé ...

Hors ligne

#10 Le 17/02/2015, à 11:18

credenhill

Re : Script bash pour correspondance entre fichiers .DOT (GraphViz)

montre les données, c'est difficile sinon
il faut ignorer les lignes qui commencent par #

awk -F "[ ,=\"]" ' /^#/ {next} ARGIND==1 .....

Hors ligne

#11 Le 24/02/2015, à 15:59

Miel56

Re : Script bash pour correspondance entre fichiers .DOT (GraphViz)

Merci beaucoup, j'ai finalement changé de méthode et j'ai un script qui contient mes couleurs :
blue;MOCS
green;IAS

et avec un sed dans un autre fichier : "s/ *\t */\t/g" < CACSColor | awk -F '\t' {printf("%s, %s\" [style=filled,color=%s/n",$1,$2,$8)}' > CACSColor2 ca a marché . Merci à toi credenhill.

Hors ligne