Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 27-11-2019 20:30:26

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : 5.9.4-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Modifier plusieurs couleurs par une seule dans un svg

Bonsoir,

je cherche une commande pour modifier les couleurs dans un svg.

les lignes commencent toujours par :

style="fill:#1a1a1a"
style="opacity:0.75;fill:#ff2a2a"



j'ai bien un :


sed -e "s/#1a1a1a/#555753/



mais je voudrais un truc qui me change les 6 caractères (code des couleurs) après tous les 

fill:#



par une seule couleur qui serait :

555753



au final :

style="fill:#555753"
style="opacity:0.75;fill:#555753"
 


Merci par avance.

Dernière modification par golgot200 (27-11-2019 20:35:49)

Hors ligne

#2 27-11-2019 21:24:33

MicP
Membre
Inscription : 29-02-2016

Re : Modifier plusieurs couleurs par une seule dans un svg

Bonjour

sed -i "s/fill:#.\{6\}/fill:#555753/" nomDuFichier.svg

Hors ligne

#3 27-11-2019 22:40:12

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : 5.9.4-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : Modifier plusieurs couleurs par une seule dans un svg

Bonsoir MicP

Merci !!! c'est nickel smile


find . -iname '*.svg' | while read i; do sed -e "s/fill:#.\{6\}/fill:#555753/" -e "s/stroke:#.\{6\}/stroke:#555753/" -e "s/stroke-width:.\{10\}/stroke-width:1.00000000/" -e 's/stop-color=.\{9\}/stop-color="#555753"/' -i "$i" ; done

 




Avant.png

Apres.png

EDIT : les liens symboliques sont perdus mais bon ... pas grave.

Dernière modification par golgot200 (27-11-2019 22:43:17)

Hors ligne

#4 28-11-2019 07:44:05

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : 5.9.4-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : Modifier plusieurs couleurs par une seule dans un svg

Bonjour,

Dans le svg, j'ai des lignes contenant des gradients :


...
stop-color="#ff0000"
stop-color="#c00"
stop-color="#aa0000"

 



tout remplacer par :


stop-color="#555753"
stop-color="#555753"
stop-color="#555753"
 



smile

Dernière modification par golgot200 (28-11-2019 07:45:32)

Hors ligne

#5 08-12-2019 10:32:43

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : 5.9.4-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : Modifier plusieurs couleurs par une seule dans un svg

Sur un svg :


<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" id="svg9"><defs id="defs3"><style id="current-color-scheme"></style></defs><g transform="matrix(1.46154 0 0 1.46154 .3 -8.7)" id="g7" fill="#1a1a1a"><path d="M8 8a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0 8c6-.01 6 4 6 4v1H2v-1s0-4 6-4z" id="path5" color="#dfdfdf"/></g></svg>
 



la partie à modifier (sans détruire ><path ... et ce qui suit) :

fill="#1a1a1a"><path




sed 's/fill="[^"+]*"/fill="#5D5553"/'




Résultat :


<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" id="svg9"><defs id="defs3"><style id="current-color-scheme"></style></defs><g transform="matrix(1.46154 0 0 1.46154 .3 -8.7)" id="g7" fill="#5D5553"><path d="M8 8a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0 8c6-.01 6 4 6 4v1H2v-1s0-4 6-4z" id="path5" color="#dfdfdf"/></g></svg>
 




MicP a écrit :

Bonjour

sed -i "s/fill:#.\{6\}/fill:#555753/" nomDuFichier.svg



Fonctionne pas si un code est du style :

fill:#cc0



ça grignotera 3 caractères non désirés.

Dernière modification par golgot200 (08-12-2019 10:51:31)

Hors ligne

#6 08-12-2019 12:49:33

MicP
Membre
Inscription : 29-02-2016

Re : Modifier plusieurs couleurs par une seule dans un svg

Dans son premier message de ce fil, golgot200 a écrit :

…je voudrais un truc qui me change les 6 caractères (code des couleurs) après tous les…

fill:#

Si on change le cahier des charge à chaque solution proposée,
c'est sûr qu'aucune proposition de solution ne fonctionnera.

Et la proposition de solution :

sed 's/fill="[^"+]*"/fill="#5D5553"/'

ne fonctionnera pas non plus avec :

fill:#cc0

puisqu'il n'y a pas de double guillemets.

Il faut d'abord prendre tout son temps pour envisager tous les cas possibles,
avant de chercher une solution.

Dernière modification par MicP (08-12-2019 13:00:58)

Hors ligne

#7 08-12-2019 16:03:24

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : 5.9.4-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : Modifier plusieurs couleurs par une seule dans un svg

Mais il n'y avait pas ce cas de figure sur le thème d'icônes sur mon premier post. wink


pour

fill:#cc0



j'ai oublier les " "

Dernière modification par golgot200 (08-12-2019 16:11:38)

Hors ligne

#8 08-12-2019 16:19:33

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : 5.9.4-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : Modifier plusieurs couleurs par une seule dans un svg

les cas de figure : ( en restant dans fill )

fill="#1a1a1a"><path
fill="currentColor"
fill="#1a1a1a" et fill="#e24f51"/></svg>
style="overflow:visible;fill:#1a1a1a;marker:none"
style="color:#000000;overflow:visible;opacity:0.5;fill:#5599ff;marker:none"
style="opacity:0.75;fill:#ff2a2a" />
style="fill:#1a1a1a" />




mais je cible qu'une couleur, celle de base du thème qui est #1a1a1a
mais ça, ça ne pose pas de difficulté avec:

sed -i 's/#1a1a1a/#5D5553/g' $_svg




pour l'instant, j'utilise dans mon script ces 2 commandes :

 
sed -i 's/#1a1a1a/#5D5553/g' $_svg
sed -i 's/fill="[^"+]*"/fill="#5D5553"/' $_svg
 

Dernière modification par golgot200 (08-12-2019 16:39:10)

Hors ligne

Pied de page des forums