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 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