Boucle for pour avoir xml file

Résolu/Fermé
tianamalalajean - 22 août 2014 à 21:29
 tianamalalajean - 23 août 2014 à 18:19
Bonjour,

Je veux avoir le résultat ci-dessous en utilisant le "script.sh" avec la boucle "for" à partir du fichier source "file" mais le résultat n'est pas concluant, est-ce que quelqu'un peut m'aider sur ce souci? A noter que je vais l'utiliser pour une centaine de paramètre (dans cet exemple ce n'est que 3)

- Résultat attendu:

# cat resultat.xml
<le fruit>banane</le fruit>
<le dessert>banane</le dessert>
<en couleur>jaune</en couleur>
<reste>jaune</reste>

<le fruit>fraise</le fruit>
<le dessert>fraise</le dessert>
<en couleur>rouge</en couleur>
<reste>rouge</reste>

<le fruit>mangue</le fruit>
<le dessert>mangue</le dessert>
<en couleur>vert</en couleur>
<reste>vert</reste>

#


- Fichier input:

# cat file
banane jaune
fraise rouge
mangue vert
#


- Script utilisé:

# cat script.sh
echo "Enter FileName:"
read fich
awk -F" " '{print $1}' $fich > fruit
awk -F" " '{print $2}' $fich > couleur
for i in 'cat fruit'
do
for j in 'cat couleur'
do
echo "<le fruit>$i</le fruit>" >> resultat.xml
echo "<le dessert>$i</le dessert>" >> resultat.xml
echo "<en couleur>$j</en couleur>" >> resultat.xml
echo "<reste>$j</reste>" >> resultat.xml
echo " " >> resultat.xml
done
done
rm fruit couleur
#


- Résultat obtenu:

# cat resultat.xml
<le fruit>banane</le fruit>
<le dessert>banane</le dessert>
<en couleur>jaune</en couleur>
<reste>jaune</reste>

<le fruit>banane</le fruit>
<le dessert>banane</le dessert>
<en couleur>rouge</en couleur>
<reste>rouge</reste>

<le fruit>banane</le fruit>
<le dessert>banane</le dessert>
<en couleur>vert</en couleur>
<reste>vert</reste>

<le fruit>fraise</le fruit>
<le dessert>fraise</le dessert>
<en couleur>jaune</en couleur>
<reste>jaune</reste>

<le fruit>fraise</le fruit>
<le dessert>fraise</le dessert>
<en couleur>rouge</en couleur>
<reste>rouge</reste>

<le fruit>fraise</le fruit>
<le dessert>fraise</le dessert>
<en couleur>vert</en couleur>
<reste>vert</reste>

<le fruit>mangue</le fruit>
<le dessert>mangue</le dessert>
<en couleur>jaune</en couleur>
<reste>jaune</reste>

<le fruit>mangue</le fruit>
<le dessert>mangue</le dessert>
<en couleur>rouge</en couleur>
<reste>rouge</reste>

<le fruit>mangue</le fruit>
<le dessert>mangue</le dessert>
<en couleur>vert</en couleur>
<reste>vert</reste>

#


A voir également:

4 réponses

Utilisateur anonyme
22 août 2014 à 21:43
salut,

pourquoi vouloir utiliser une boucle
for
qui n'est pas adaptée pour traiter un fichier ?
0
tianamalalajean
23 août 2014 à 07:31
Bonjour

Que dois-je utiliser à la place de "for" pour le traiter?
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
23 août 2014 à 09:11
Salut,

$ cat fich 
banane jaune
fraise rouge
mangue vert

$ cat template
<le fruit>FRU</le fruit>
<le dessert>FRU</le dessert>
<en couleur>COU</en couleur>
<reste>COU</reste>

$ while read fru cou; do sed "s/FRU/${fru}/;s/COU/${cou}/;" template; echo; done < fich
<le fruit>banane</le fruit>
<le dessert>banane</le dessert>
<en couleur>jaune</en couleur>
<reste>jaune</reste>

<le fruit>fraise</le fruit>
<le dessert>fraise</le dessert>
<en couleur>rouge</en couleur>
<reste>rouge</reste>

<le fruit>mangue</le fruit>
<le dessert>mangue</le dessert>
<en couleur>vert</en couleur>
<reste>vert</reste>

0
tianamalalajean
23 août 2014 à 18:19
Slt,

Merci bcp à zipe31, j'ai essayé et ça marche très bien.

Mon problème est résolu.
0