Bonjour,
Je débute et on me demande à partir d'un fichier CSV "parent.csv" de générer un fichier xml "parent.xml" en utilisant awk
Je ne parviens pas à afficher les informations relatives aux enfants
Fichier "parent.csv"
Fichier "parent.xml" qui doit être généré
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Dupont;Paris;France;Martin;5;Axelle;12;Quentin;3; Durant;Marseille;France;Theo;5; Martin;Lyon;France;Leon;2;Ariane;1;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 <Rapport> <Famille> <Nom - "Dupont" /> <Lieu - Ville:"Paris" - Pays:"France" /> <Enfants> <Enfant - Prenom:"Martin" - Age:5 /> <Enfant - Prenom:"Axelle" - Age:12 /> <Enfant - Prenom:"Quentin" - Age:3 /> </Enfants> </Famille> <Famille> <Nom - Durant /> <Lieu - Ville:"Maresille" - Pays:"France" /> <Enfants> <Enfant - Prenom:"Theo" - Age:"5" /> </Enfants> </Famille> <Famille> <Nom - "Martin" /> <Lieu - Ville:"Lyon" - Pays:"France" /> <Enfants> <Enfant - Prenom:"Leon" - Age:"2" /> <Enfant - Prenom:"Ariane" - Age:"1" /> </Enfants> </Famille> </Rapport>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 awk -F, '{ if(NR==1){print "<Rapport>"}; split($0,array,";"); {print "\t<Famille>"}; {print ("\t\t<Nom - \042"array[1]"\042 />")}; {print ("\t\t<Lieu - Ville:\042"array[2]"\042 - Pays:\042"array[3]"\042 />")}; {print "\t\t<Enfants>"}; {print "\t\t</Enfants>"}; {print "\t</Famille>"} } END{print "</Rapport>"}' parent.csv > parent.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 $ more parent.xml <Rapport> <Famille> <Nom - "Dupont" /> <Lieu - Ville:"Paris" - Pays:"France" /> <Enfants> </Enfants> </Famille> <Famille> <Nom - "Durant" /> <Lieu - Ville:"Marseille" - Pays:"France" /> <Enfants> </Enfants> </Famille> <Famille> <Nom - "Martin" /> <Lieu - Ville:"Lyon" - Pays:"France" /> <Enfants> </Enfants> </Famille> </Rapport>
Je ne parviens pas à afficher les enfants
==> ne fonctionne pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 awk -F, '{ if(NR==1){print "<Rapport>"}; split($0,array,";"); {print "\t<Famille>"}; {print ("\t\t<Nom - \042"array[1]"\042 />")}; {print ("\t\t<Lieu - Ville:\042"array[2]"\042 - Pays:\042"array[3]"\042 />")}; {print "\t\t<Enfants>"}; for (i = 4; i <= NF; i+=2) { print ("\t\t\t<Enfant - Prenom:\042"array[i]"\042 - Age:\042"array[i+1]"\042 />") }; {print "\t\t</Enfants>"}; {print "\t</Famille>"} } END{print "</Rapport>"}' parent.csv > parent.xml
Merci de votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 $ more parent.xml <Rapport> <Famille> <Nom - "Dupont" /> <Lieu - Ville:"Paris" - Pays:"France" /> <Enfants> </Enfants> </Famille> <Famille> <Nom - "Durant" /> <Lieu - Ville:"Marseille" - Pays:"France" /> <Enfants> </Enfants> </Famille> <Famille> <Nom - "Martin" /> <Lieu - Ville:"Lyon" - Pays:"France" /> <Enfants> </Enfants> </Famille> </Rapport>
Partager