Boucle for pour avoir xml file

Résolu
tianamalalajean -  
 tianamalalajean -
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>

#


4 réponses

  1. Utilisateur anonyme
     
    salut,

    pourquoi vouloir utiliser une boucle
    for
    qui n'est pas adaptée pour traiter un fichier ?
    0
  2. tianamalalajean
     
    Bonjour

    Que dois-je utiliser à la place de "for" pour le traiter?
    0
  3. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    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
  4. tianamalalajean
     
    Slt,

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

    Mon problème est résolu.
    0