Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 26/05/2014, à 00:46

Levi59

[resolu] Retirer balises doublons dans fichiers xml

bonjour,

J'aimerais trouver une commande qui me permette de supprimer les ligne en double dans un fichier xml.

Je ne peux pas trier le fichier sans risquer de briser la structure et je ne dois m'attaquer qu'à une seule balise.

Ex :

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<movie>
<sorttitle></sorttitle>
<trailer></trailer>
<rating>6.8</rating>
<year>2013</year>
<runtime>1h 49mn</runtime>
<top250>0</top250>
<genre>Action</genre>
<genre>Comédie</genre>
<genre>Thriller</genre>
<genre>Drama</genre>
<genre>Thriller</genre>
<fileinfo>
	<streamdetails>
		<video>
			<codec>h264</codec>
			<aspect>2.4</aspect>
			<width>1276</width>
			<height>532</height>
			<duration>109</duration>
			<durationinseconds>6540</durationinseconds>
		</video>
		<audio>
			<codec>aac</codec>
			<language>French</language>
			<channels>2</channels>
		</audio>
		<audio>
			<codec>aac</codec>
			<language>Japanese</language>
			<channels>2</channels>
		</audio>
		<subtitle>
			<language>French</language>
		</subtitle>
		<subtitle>
			<language>French</language>
		</subtitle>
		<subtitle>
			<language>French</language>
		</subtitle>
	</streamdetails>
</fileinfo>
</movie>

Je voudrais nettoyer les balises "<genre>" uniquement qui comme ici sont parfois en double. Je ne veux pas pour autant supprimer les balises language.

Avez-vous une bonne commande pour me permettre de faire ça?

Dernière modification par Levi59 (Le 27/05/2014, à 22:42)

Hors ligne

#2 Le 26/05/2014, à 02:01

Watael

Re : [resolu] Retirer balises doublons dans fichiers xml

salut,

avec awk, si la ligne contient <genre>, tu vérifies qu'elle est est dans un tableau T : si elle est dans le tableau, tu n'affiches pas la ligne, si elle n'y est pas tu affiches la ligne, et tu alimentes le tableau avec la ligne.

à peu près.


Connected \o/
Welcome to sHell. · eval is evil.

En ligne

#3 Le 26/05/2014, à 19:47

Postmortem

Re : [resolu] Retirer balises doublons dans fichiers xml

Salut,
Un awk tout moche :

awk '/<movie>/{i=0}!/<genre>/||//&&!i++' test.xml

Edit :
On peut le raccourcir encore un peu !

awk '/<movie>/{i=0}!/<genre>/||!i++' test.xml

Dernière modification par Postmortem (Le 26/05/2014, à 19:59)


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#4 Le 26/05/2014, à 21:55

Levi59

Re : [resolu] Retirer balises doublons dans fichiers xml

j'ai testé sur mon exemple et il me supprime tout sauf la première balise genre...

Je voudrais qu'il me supprime uniquement le "<genre>Thriller</genre>" en trop.

Hors ligne

#5 Le 26/05/2014, à 22:27

Postmortem

Re : [resolu] Retirer balises doublons dans fichiers xml

Ah, j'avais mal compris, je croyais que tu voulais garder seulement le premier genre qui apparaissait dans chaque film


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#6 Le 26/05/2014, à 22:28

pingouinux

Re : [resolu] Retirer balises doublons dans fichiers xml

Bonsoir,
Peut-être ceci (en reprenant l'idée de Postmortem #3)

awk '!(/<genre>/&&a[$0]++)' test.xml

Hors ligne

#7 Le 27/05/2014, à 22:42

Levi59

Re : [resolu] Retirer balises doublons dans fichiers xml

ça a marché parfaitement! Merci ^^

Hors ligne