#1 Le 01/02/2016, à 16:33
- Kerrigan
chaîne de car a remplacer avec "sed" dans 1 fichier xml
Bonjour,
J'ai des fichiers xml qui contient des lignes avec une valeur qui doit remplacer automatiquement la valeur précédente. Je sais faire quand on connaît a l'avance l'ancienne valeure par contre le problème ici est que l'ancienne valeurs peut être différente suivante les cas et il faut que ça marche a tous les coups.
prenons comme exemple cette ligne simple :
<Variable nom="couleur" type="STRING">rouge</Variable>
J'aimerai une commande linux qui modifie automatiquement (via sed par exemple), le mot "rouge" par "jaune" mais sans prendre en compte que c'est rouge avant donc par exemple par rapport a "couleur" dans la variable.
Donc si la ligne est différente, par exemple comme ceci :
<Variable nom="couleur" type="STRING">violet</Variable>
avec cette même commande, il faut aussi que violet soit remplacé par rouge.
une idée ?
Hors ligne
#2 Le 01/02/2016, à 17:19
- pingouinux
Re : chaîne de car a remplacer avec "sed" dans 1 fichier xml
Bonjour,
Peux-tu montrer un petit exemple avec un fichier de départ de quelques lignes, et celui que tu souhaites obtenir à l'arrivée ?
Hors ligne
#3 Le 02/02/2016, à 11:24
- Kerrigan
Re : chaîne de car a remplacer avec "sed" dans 1 fichier xml
Je n'ai pas le fichier xml sur moi mais tu peux faire avec les 2 exemples que j'ai donné, si ça fonctionne avec, je saura m'adapter pour le script xml complet, c'est surtout la façon de faire que je veux savoir.
il faut une commande qui balancé sur ça :
<Variable nom="couleur" type="STRING">rouge</Variable>
<Variable nom="couleur" type="STRING">violet</Variable>
va remplacer par exemple la valeur rouge et violet par gris, la commande doit donc prendre en paramètre "couleur". il ne faut pas que "rouge" et "violet" apparaisse dans la commande.
En gros la commande doit faire :
si la variable nom est "couleur" alors dans cette même ligne, entre "string"> et </variable> remplacer le nom quel qu’il soit par gris
Hors ligne
#4 Le 02/02/2016, à 11:33
- pingouinux
Re : chaîne de car a remplacer avec "sed" dans 1 fichier xml
coul=gris
sed -r '/nom="couleur"/s/(type="STRING">)[^<]+(<)/\1'$coul'\2/' fichier
Hors ligne