#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 : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne