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 03/07/2012, à 15:30

sam1975

sed / awk sur des fichiers xml

Salut

Je suis en train d'effectuer des traitements sur des fichiers xml.

Ma question va peut-être surprendre car la logique voudrait que je fasse une transformation xsl. Comme j'ai plus d'une centaine de fichiers, je me demande si via  le bash, je peux arriver à mes fins.

Voici mon soucis actuel qui se traduit en 2 cas de figures

1) dans certains fichiers, j'ai les balises suivantes

<subject>_</subject>
  <subject>_</subject>
  <subject>_</subject>
  <subject>_</subject>

Comment pourrais-je les supprimer avec sed (si je laisse tel quel, ça fout le souk quand je reindexe ma base)? J'ai essayé en perl, j'arrive à retirer les underscore mais pas les balises.

2) dans d'autres fichiers, j'ai des résultats comme celui-ci

  <subject>$a Microscopie $x Technique $x Thèses et écrits académiques $3 029786436 $3 027253139</subject>
  <subject>$a Nanotechnologie $x Thèses et écrits académiques $3 031918247 $3 027253139</subject>
  <subject>$a Spectres infrarouges $x Thèses et écrits académiques $3 027846903 $3 027253139</subject>

je dois virer le $a, remplacer le $x par un ; et remplacer les $3 par un |.


est-ce qu'il y a moyen de combiner les deux traitements dans un script bash?
Comme je n'ai jamais vraiment utilisé sed, awk...., j'ai encore des erreurs.

Merci d'avance

Hors ligne

#2 Le 03/07/2012, à 16:22

nesthib

Re : sed / awk sur des fichiers xml

les $a/$x sont des variables ?

sinon :

sed -r -e 's/\$x/;/g' -e 's/\$3/|/g' -e 's@<subject>\$a ([^<]+)</subject>@\1@'

(si tu veux uniquement virer les balises, il suffit d'un 's@</?subject>@@g')

une version condensée :

sed -r 's@</?subject>(\$a )?@@g;s/\$x/;/g;s/\$3/|/g'

GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne