[Shell] Création de plusieurs fichiers XML

Résolu/Fermé
Zent - 14 juin 2007 à 11:14
 Zent - 19 juin 2007 à 09:49
Salut tlm!!

Voilà, j'ai besoin de réaliser un script shell, et je n'arrive malheuresement pas à appliquer mes peu de connaissances pour réaliser ce que je veux.

A la base, j'ai un fichier à plat du type:
data1 value1
data2 value2
data3 value3

Chaque ligne est séparée par une tabulation.

Je voudrais pouvoir créer un fichier XML pour chaque ligne, avec pour nom le numéro de la ligne.
Par exemple on aurait test_1.xml :
<data>data1</data><value>value1</value>
test_2.xml :
<data>data2</data><value>value2</value>
etc etc

J'ai voulu faire une boucle couplée à un awk:

numero=1
while read line ;do
while $numero<10 ; do
awk -F " " '{ print "<data>"$1"</data><value>"$2"</value>" }' entree> test_$numero.xml
numero=$((1+$numero))
done
done < entree


Mais effectivement, ce script ne peut pas marcher... Il crée des milliers de fichiers avec à l'intérieur :
<data>data1</data><value>value1</value>
<data>data2</data><value>value2</value>
<data>data3</data><value>value3</value>


Quelqu'un peut m'aider à remettre tout ça dans l'ordre?? Je me rends bien compte que je ne peux pas coupler le awk et le while, mais je vois pas bien comment...

Merci !!!
A voir également:

23 réponses

Par contre, juste un détail.
Dans ta commade :
perl -ne 'open F, ">>test${.}.xml";s/^(\S+)\s+(\S+)/<data>$1<\/data><value>$2<\/value>/;print F;close F;' plop

Si je comprends bien, le caractère séparateur est \s+. Mais si un jour dans une des variables il faut que j'ai un espace, bah là ca ne va plus.

J'ai donc pensé à changer le caractère séparateur (par exemple prenons ";") :
perl -ne 'open F, ">>test${.}.xml";s/^(\S+)\;(\S+)/<data>$1<\/data><value>$2<\/value>/;print F;close F;' plop
Jusque là tout va bien.

Sauf que si dans mon fichier en entrée j'ai :
a a;b
En sortie je me retrouve avec test1.xml:
a a;b


Comme on peut le constater je connais rien du tout en perl, donc je rame un peu.
J'ai essayé de regarder le man, mais je ne vois pas comment résoudre ce problème.

Merci :)
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
18 juin 2007 à 20:06
essaie
perl -ne 'open F, ">>test${.}.xml";s/^([^;]+)\;([^;]+)/<data>$1<\/data><value>$2<\/value>/;print F;close F;' plop 
0
Bon bah je crois que le sujet est clos ^^

Tu m'as enlevé une épine du pied lami20j, encore mille mercis!!!!!!!!!! :):):):):):):):):):)
0