#1 Le 22/11/2007, à 18:14
- misteraph
Recuperer des bouts de chaines dans un fichier en bash
Bonjour.
J'ai un fichier texte avec des données de la forme :
<?xml version="1.0"?>
<entry name="listeData" mtime="1195661856" type="list" ltype="string">
<li type="string">
<stringvalue>data1</stringvalue>
</li>
<li type="string">
<stringvalue>data2</stringvalue>
</li>
<li type="string">
<stringvalue>data3</stringvalue>
</li>
<li type="string">
<stringvalue>...</stringvalue>
</li>
<li type="string">
<stringvalue>default</stringvalue>
</li>
</entry>
Je voudrais recupérer creer un nouveau avec dedans data1, data2, data3 , ... dans un autre fichier, sur la même ligne et séparé par un espace.
Est-ce que vous pouvez m'aider ?
Merci d'avance
Dernière modification par misteraph (Le 22/11/2007, à 19:20)
Hors ligne
#2 Le 22/11/2007, à 18:40
- mtgrpg
Re : Recuperer des bouts de chaines dans un fichier en bash
Forcément en bash ?
Parce que sinon XSLT est très pratique pour bidouiller un arbre XML… Ou même n’importe quel autre langage qui connaà®t DOM…
^[:wq
Help!
Hors ligne
#3 Le 22/11/2007, à 18:44
- abetsic
Re : Recuperer des bouts de chaines dans un fichier en bash
Tu ne l'as pas précisé, mais je suppose que tu veux travailler en bash ? Sinon tu peux utiliser python, il doit bien y avoir une bibliothèque pour traiter le xml. Ne connaissant pas parfaitement le python je ne peux pas t'en dire beaucoup...
Pour la solution bash, un coup de grep et de sed devrait faire l'affaire :
cat ton_fichier | grep stringvalue | sed 's/<[^>]*>//g' | sed s/\ *//g | tr '\n' ' '
et en rajoutant "> fichier_sortie" à la fin de la ligne on a ce que tu demandes.
Quelques explications :
grep stringvalue : n'affiche que les lignes qui contiennent "stringvalue"
sed 's/<[^>]*>//g' : supprime les balises
sed s/\ *//g : supprime les espaces
tr '\n' ' ' : supprime les sauts de lignes.
Hors ligne
#4 Le 22/11/2007, à 19:14
- misteraph
Re : Recuperer des bouts de chaines dans un fichier en bash
Super merci ! C'est bien en absh que je veux faire cette manipulation.
Par contre, j'ai oublié de demander que je ne voulais pas non plus la ligne contenant "default".
J'ai essayé de rajouter tr 'default' ' ' mais ça fonctionne pas.
Hors ligne
#5 Le 22/11/2007, à 19:25
- Yannick_LM
Re : Recuperer des bouts de chaines dans un fichier en bash
grep -v
(et man grep )
Dernière modification par Yannick_LM (Le 22/11/2007, à 19:25)
Trucs et astuces pour Vim
Ma web page avec des trucs dessus ...
Hors ligne