Ordonner les données fichier XML
Bonjour,
Je souhaite automatiser une tâche en Shell, mais pour l'instant ça ne marche pas.
En fait, j'ai un fichier XML qui contient plusieurs fois la balise suivante : <value>Number</value> avec Number est un nombre qui va de 1 à n.
Je souhaiterais que mon script commence à lire la première ligne du fichier XML et à chaque fois qu'il rencontre <value>Number</value>, il remplace Number par 1 et il incrémente pour les autres de manière croissante.
Voici mon script mais il ne marche pas comme je le veux :
Code:
1 2 3 4 5 6 7 8 9 10 11
| #!/bin/sh
i=J=1
Echo -n " saisir nombre : "
while [$i -le $nombre]
do
let J=$J-1
let Number =$J+1
sed s/"Number"/"$Number"/g
let i=$i+1
Done |
Merci de votre aide !
Ordonner les données fichier XML
N_BAH,
En fait je n'ai aucune erreur dans le script. Il s'exécute parfaitement mais le seul problème il remplace toutes les balises <value>Number</value> par <value>1</value>. J'ai l'impression il ne prend pas en compte la boucle while. Le Number=1 est valable uniquement pour la première balise le second doit passer à 2 etc....
Merci d'avance !
Ordonner données fichier XML
Peux-tu me dire exactement alors les erreurs que tu as détecté s'il te plaît ?
L'algorithme est-il correcte ?
Merci bien !
Ordonner les données fichier XML
Merci de votre aide, j'ai corrigé les différentes erreurs de syntaxe mais je crois que c'est un problème algorithme que j'ai en ce moment.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
#!/bin/sh
i=1
J=1
echo -n "Saisir le nombre : "
read Nombre
while [ $i -le $Nombre ]
do
let J=$J-1
let Number =$J+1
while read Ligne
do
sed s/"Number"/"$Number"/g Fichier.xml > Fichier_2.xml
done
let i=$i+1
done |
Merci de votre aide et bon week-end !
Ordonner données en shell
Merci pour vos réponses :
j'ai testé l'algo proposé par N_BAH, mais au final, il ne remplace rien :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
#!/bin/sh
set -x
n=1
while read ligne
do
if (expr "$Ligne" : '<Value>(.*)</Value>')
then
sed s/"<Value>(.*)</Value>"/"<Value>$n</Value>"/g
let n=$n+1
else
sed s/"$ligne"/
fi
done < Fichier.xml |
voici les résultats :
avant exécution du script :
Après exécution du script :
Merci de votre aide, je suis novice en programmation d'où mes nombreuses questions de bas niveau.