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 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 roll )
wink

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