#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 :
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)
LACROIX Gilles H 1967 MCF OUI COM Telecom Nantes
RODRIGUEZ Mohammed H 1978 IAS St CyrLe 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