SED comment traiter des fichiers xml

sinus -  
buggrodgers Messages postés 1 Statut Membre -
Bonjour,

Je voudrais utiliser sed pour faire le traitement suivant dans 300 fichiers xml

Je voudrais remplacer des lignes comme

<traitens type="int">8000</traitens>

par

<traitens type='java.lang.Integer-array'>
<int type='int'>8000</int>
<int type='int'>null</int>
</traitens>

Comme je veux aussi traiter des fichiers avec plusieurs attributs a modifier de cette maniere, je veux donc specifier plusieurs modifications a apporter selon que je suis sur une ligne ou une autre et

j'utilise un fichier de script sed que j'invoque de la maniere suivante : sed -f test.txt bom.txt>bom2.txt

Le fichier de script sed contient:

/traitens/s#\([0-9]*\)>#<traitens type='java.lang.Integer-array'><int type='int'>\1<\/int><int type='int'>null<\/int> <\/traitens>#
/cycles/s#\([0-9]*\)>#<cycles type='java.lang.Integer-array'><int type='int'>\1<\/int><int type='int'>null<\/int> <\/cycles>#

Mais je n'y arrive pas...
Est ce que quelqu'un peux me filer un coup de main? Merci!
Francois.
A voir également:

2 réponses

jipicy Messages postés 41342 Statut Modérateur 4 896
 
Salut,
[tmpfs]$ cat sinus
<traitens type="int">8000</traitens>

[tmpfs]$ sed "
/traitens/{
s#\(.*=\)\"\(.*\)\">\([^<]*\)\(.*\)#\1'java.lang.Integer-array'>\n\
<int type='int'>\3</int>\n\
<int type='int'>null</int>\n\
\4#
}" sinus

<traitens type='java.lang.Integer-array'>
<int type='int'>8000</int>
<int type='int'>null</int>
</traitens>

[tmpfs]$
;-))
0
buggrodgers Messages postés 1 Statut Membre
 
Bonjour,

Et bien tout d'abord merci ca fonctionne tres bien et puis ca me permet de traiter plusieurs types d'attributs en même temps dans les fichier à parser.

Ca me donne une très bonne base de travail pour continuer a apprendre SED: j'avais deja lu la FAQ/Manuel SED que vous avez écrit, maintenant il me reste a comprendre le comment de la récupération des buffers dans l'expression que vous venez d'écrire. Mais comme j'ai un modèle maintenant, je devrais y arriver sans trop de problèmes.

Vous m'avez bien sorti le cul des ronces :D, merci encore!
François.
0