Modifications de fichiers par lots

Ktmmyroon

Membre junior
18 Août 2018
25
0
40
Bonjour,
J’aimerais modifier des fichiers (apparemment xml) que j’arrive à ouvrir avec text edit.
Dans ces fichiers je dois modifier certaine parties, j’ai :

XML:
</Participant>

Et je voudrais indiquer :
XML:
<Participant><Person color="16711680" gender="male"><PersonName><![CDATA[Orbea Alma 29 H60 2014]]></PersonName></Person></Participant>

Mais quand je tente la modification avec Terminal avec la commande :

Bloc de code:
find "/Volumes/1 To/Sigma Orbea copie" -maxdepth 1 -type f -name '*.slf' -print0 | xargs -0 sed -i ''  "s#</Participant>#<Participant><Person color="16711680" gender="male"><PersonName><![CDATA[Orbea Alma 29 H60 2014]]></PersonName></Person></Participant>#g"

Les guillemets entourants 16711680 et male disparaissent et les fichiers sont donc illisibles pour mon logiciel qui les exploite. C’est une application pour mon gps ce sont les sessions velos.

Sachant que je dois modifier 550 fichiers...
 
Dernière édition par un modérateur:

pomme-z

Membre junior
6 Novembre 2020
60
9
Bonjour, je ne suis pas un expert de ce genre de commande et je serais peut être passé par Applescript.

Théoriquement :

Person color="\"16711680"\"
 
Dernière édition par un modérateur:
M

Membre supprimé 1129907

Invité
Ou plus simple :
Bloc de code:
find "/Volumes/1 To/Sigma Orbea copie" -maxdepth 1 -type f -name '*.slf' -print0 | xargs -0 sed -i '' 's#</Participant>#<Participant><Person color="16711680" gender="male"><PersonName><![CDATA[Orbea Alma 29 H60 2014]]></PersonName></Person></Participant>#g'
 

Ktmmyroon

Membre junior
18 Août 2018
25
0
40
Salut ecatomb,
Merci. Je viens de tester, ça fonctionne à merveille.
Si je vois bien, tu as modifié les guillemets avant </Participant> par un « simple guillemet » je dirais. Peux-tu me dire quel symbole est ce exactement ?

Théoriquement : Person color="\"16711680"\"
Pas testé ta commande, mais merci de ta réponse ;)
 
Dernière édition par un modérateur:
M

Membre supprimé 1129907

Invité
Tout ce qu'il y a entre deux simple-quotes (le ') est considéré comme du texte et ne sera pas remplacé lors de l'exécution de la commande : $a sera considéré comme $a
Tout ce qui est entre deux double-quotes (le ") sera au contraire remplacé par l'équivalent : $a sera remplacé par le contenu de la variable a. Il faut alors remplacer les caractères spéciaux $, ", etc... par le \ pour qu'ils soient bien considérés comme du texte.
 
Dernière édition par un modérateur:
  • J’aime
Réactions: Ktmmyroon

pomme-z

Membre junior
6 Novembre 2020
60
9
Pas testé ta commande, mais merci de ta réponse ;)
Yes, comme je ne connaissais pas vraiment tes besoins et genre s'il y'avait d'autres variables (mauvais terme), la commande que je te proposais était plus spécifique. Mais celle proposée par ecatomb va aussi très bien, c'est toujours un jeu d'astuces.
 
Dernière édition par un modérateur: