[sed et Cie] Formater un fichier csv en xml
Résolu/Fermé
Swiss Knight
Messages postés
1956
Date d'inscription
samedi 22 novembre 2008
Statut
Membre
Dernière intervention
27 juillet 2016
-
Modifié par Swiss Knight le 29/06/2016 à 22:37
Swiss Knight Messages postés 1956 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 - 4 juil. 2016 à 15:24
Swiss Knight Messages postés 1956 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 - 4 juil. 2016 à 15:24
A voir également:
- [sed et Cie] Formater un fichier csv en xml
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment formater un pc - Guide
- Comment réduire la taille d'un fichier - Guide
- Ouvrir un fichier .bin - Guide
2 réponses
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
30 juin 2016 à 09:14
30 juin 2016 à 09:14
hello
$ awk -f f3.awk foo.txt
<Bloc>
<NomImage> 10_2719.JPG </NomImage>
<Point>
<NomPoint> Point11 </NomPoint>
<Coordonnee1Cart> 1025.5 489.5 </Coordonnee1Cart>
</Point>
<Point>
<NomPoint> Point14 </NomPoint>
<Coordonnee1Cart> 2883.5 6927.5 </Coordonnee1Cart>
</Point>
<NomImage> 10_2720.JPG </NomImage>
<Point>
<NomPoint> Point10 </NomPoint>
<Coordonnee1Cart> 1456 305 </Coordonnee1Cart>
</Point>
<Point>
<NomPoint> Point11 </NomPoint>
<Coordonnee1Cart> 753.5 061.5 </Coordonnee1Cart>
</Point>
<NomImage> 11_2720.JPG </NomImage>
<Point>
<NomPoint> Point14 </NomPoint>
<Coordonnee1Cart> 2741.5 1703 </Coordonnee1Cart>
</Point>
<NomImage> 11_2721.JPG </NomImage>
<Point>
<NomPoint> Point5 </NomPoint>
<Coordonnee1Cart> 1313 813 </Coordonnee1Cart>
</Point>
</Bloc>
$ cat f3.awk
BEGIN {FS=","; print "<Bloc>"}
!t[$1]++ {print "\t<NomImage> " $1 ".JPG </NomImage>"}
{sub("P", "", $2); print "\t<Point>\n\t\t<NomPoint> Point" $2 " </NomPoint>\n\t\t<Coordonnee1Cart> " $3 " " $4 " </Coordonnee1Cart>\n\t</Point>"}
END {print "</Bloc>"}
Swiss Knight
Messages postés
1956
Date d'inscription
samedi 22 novembre 2008
Statut
Membre
Dernière intervention
27 juillet 2016
110
Modifié par Swiss Knight le 30/06/2016 à 19:51
Modifié par Swiss Knight le 30/06/2016 à 19:51
Bien le bonsoir.
:)
Merci infiniment pour ta réponse, t'es un chef !
Il y a juste la petite subtilité suivante en fait (celle que je n'arrive pas résoudre) :
Le contenu du reste de l'arborescence est tout bon, mais je n'arrive pas à faire en sorte que chaque image et sa suite de points soit incluse dans un <bloc> </bloc>.
Ce ne doit pas être un unique <bloc> pour toutes les images, c'est vraiment un par image.
En modifiant le début de la seconde ligne du fichier f3.awk comme ça (cette solution est un peu bancale, il est vrai) :
ça joue, sauf que je me retrouve en tout début de fichier avec une et une seule balise de fermeture </bloc> inutile. Mais c'est seulement en début, avant le tout premier <bloc>.
:/
--
"Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement." -A. Einsten-
:)
Merci infiniment pour ta réponse, t'es un chef !
Il y a juste la petite subtilité suivante en fait (celle que je n'arrive pas résoudre) :
<Bloc>
<NomImage> 10_2719.JPG </NomImage>
suivi de la liste de tous les points de l'image 2718
</Bloc>
<Bloc>
<NomImage> 10_2720.JPG </NomImage>
suivi de la liste de tous les points de l'image 2720
</Bloc>
<Bloc>
<NomImage> 11_2721.JPG </NomImage>
suivi de la liste de tous les points de l'image 2721
</Bloc>
Le contenu du reste de l'arborescence est tout bon, mais je n'arrive pas à faire en sorte que chaque image et sa suite de points soit incluse dans un <bloc> </bloc>.
Ce ne doit pas être un unique <bloc> pour toutes les images, c'est vraiment un par image.
En modifiant le début de la seconde ligne du fichier f3.awk comme ça (cette solution est un peu bancale, il est vrai) :
!t[$1]++ {print "</bloc>\n\t<bloc>\t<NomImage> . . . .
ça joue, sauf que je me retrouve en tout début de fichier avec une et une seule balise de fermeture </bloc> inutile. Mais c'est seulement en début, avant le tout premier <bloc>.
:/
--
"Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement." -A. Einsten-
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
1 juil. 2016 à 08:59
1 juil. 2016 à 08:59
un bloc par image
avec un test if(n++)print "</Bloc>"; pour éviter un /Bloc avant la 1ère image
avec un test if(n++)print "</Bloc>"; pour éviter un /Bloc avant la 1ère image
$ awk -f f3.awk foo.txt
<Bloc>
<NomImage> 10_2719.JPG </NomImage>
<Point>
<NomPoint> Point11 </NomPoint>
<Coordonnee1Cart> 1025.5 489.5 </Coordonnee1Cart>
</Point>
<Point>
<NomPoint> Point14 </NomPoint>
<Coordonnee1Cart> 2883.5 6927.5 </Coordonnee1Cart>
</Point>
</Bloc>
<Bloc>
<NomImage> 10_2720.JPG </NomImage>
<Point>
<NomPoint> Point10 </NomPoint>
<Coordonnee1Cart> 1456 305 </Coordonnee1Cart>
</Point>
<Point>
<NomPoint> Point11 </NomPoint>
<Coordonnee1Cart> 753.5 061.5 </Coordonnee1Cart>
</Point>
</Bloc>
<Bloc>
<NomImage> 11_2720.JPG </NomImage>
<Point>
<NomPoint> Point14 </NomPoint>
<Coordonnee1Cart> 2741.5 1703 </Coordonnee1Cart>
</Point>
</Bloc>
<Bloc>
<NomImage> 11_2721.JPG </NomImage>
<Point>
<NomPoint> Point5 </NomPoint>
<Coordonnee1Cart> 1313 813 </Coordonnee1Cart>
</Point>
</Bloc>
$
$ head f3.awk
BEGIN {FS=","}
!t[$1]++ {if(n++)print "</Bloc>"; print "<Bloc>\n\t<NomImage> " $1 ".JPG </NomImage>"}
{sub("P", "", $2); print "\t<Point>\n\t\t<NomPoint> Point" $2 " </NomPoint>\n\t\t<Coordonnee1Cart> " $3 " " $4 " </Coordonnee1Cart>\n\t</Point>"}
END {print "</Bloc>"}
Swiss Knight
Messages postés
1956
Date d'inscription
samedi 22 novembre 2008
Statut
Membre
Dernière intervention
27 juillet 2016
110
4 juil. 2016 à 15:24
4 juil. 2016 à 15:24
Joli, ça a l'air de bien fonctionner là !
Merci infiniment !!
Merci infiniment !!