Le 11 mars 2016 à 02:26, Bernard Schoenacker <bernard.schoenac...@free.fr> a 
écrit :
> 
> Le Thu, 10 Mar 2016 21:24:42 +0100,
> Pierre Malard <p...@teledetection.fr> a écrit :
> 
>> Et un truc du genre :
>>      sed -i ’s/\/*<block>}/,/g’
>> ça ne fonctionnerait pas ?
> 
> bonjour,
> 
> merci pierre pour le résultar qui ne fonctionne pas
> 
> pour ma part avec 2 passes c'est bon :
> 
> sed -i 's/<block>/,/g' raw |sed -i  's/<\/block>/,/g'
> 
> mais j'eusse préféré quelque chose dans le style :
> 
> sed -i 's/<block>/,/g' 's/<\/block>/,/g' raw
> 
> mais la 2e ne passe pas du fait qu'il manque un caractère de séparation
> mais lequel?
> 
> ci joint le fichier raw
> 
> slt
> bernard<raw>

Je n’avais pas bien compris ton problème. En fait, tu ne veux pas seulement 
transformer les blocs « <block> » et « </block> » en virgule. Dans ce cas, le 
script :
        sed -i 's/<\/*block>/,/g’ FICHIER
fonctionne parfaitement.

Ce que tu veux, c’est transformer un XML en CSV, c’est à dire transformer tes 
fameux blocs en virgule. Mais pas seulement les blocs mais aussi le passage à 
la ligne précédent. Un truc du genre :
        sed -i ’s/FIN_LIGNE*<\/*block>/,/g’ FICHIER
ça, ça ne fonctionne pas parce que sed, comme ed, est un simple « éditeur de 
ligne ». Il ne traite que la ligne, pas plus.
Il faudrait mettre en buffer les données jusqu’à trouver le déclencheur voulu 
pour faire un traitement comme tu le désire. Un langage comme « awk » me semble 
mieux adapté pour ça.

Comme je suis un grand fainéant et que j’ai horreur de refaire ce qui a déjà 
été très bien fait, j’aurais tendance à te conseiller l’excellente lecture du 
blog de Stéphane Bortzmeyer qui traite du sujet :
        http://www.bortzmeyer.org/xml-to-csv.html

Cordialement


--
Pierre Malard

  « La mondialisation de l'économie a, « en moyenne », eu pour conséquence
     l'augmentation du niveau de vie « moyen ».
     Un homme avec la tête dans un four et les jambes dans un congélateur a,
     « en moyenne », une température corporelle idéale... »
                                         Philippe Val - France Inter 09/04/2001
   |\      _,,,---,,_
   /,`.-'`'    -.  ;-;;,_
  |,4-  ) )-,_. ,\ (  `'-'
 '---''(_/--'  `-'\_)   πr

perl -e '$_=q#: 3|\ 5_,3-3,2_: 3/,`.'"'"'`'"'"' 5-.  ;-;;,_:  |,A-  ) )-,_. ,\ 
(  `'"'"'-'"'"': '"'"'-3'"'"'2(_/--'"'"'  `-'"'"'\_): 
24πr::#;y#:#\n#;s#(\D)(\d+)#$1x$2#ge;print'
- --> Ce message n’engage que son auteur <--

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

Répondre à