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.
Configuration: Windows XP
Firefox 2.0.0.14

2 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
  2. 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