Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1176 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [SHELL] probleme recherche sed

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SHELL] probleme recherche sed

n°1132483
ppic
Posté le 02-05-2009 à 19:35:55  profilanswer
 

bonjour,
 
ca fait une demi journée que je me casse là tete avec ça:
 
j'ai un fichier imdb.txt qui contient entre autre ça:
 

Code :
  1. 31 March 1999 (USA)
  2. <a class="tn15more inline" href="/title/tt0147800/releaseinfo" onClick="(new Image()).src='/rg/title-tease/releasedates/images/b.gif?link=/title/tt0147800/releaseinfo';">more</a>
  3. </div>
  4. <div class="info">
  5. <h5>Genre:</h5>
  6. <a href="/Sections/Genres/Comedy/">Comedy</a> | <a href="/Sections/Genres/Romance/">Romance</a> <a class="tn15more inline" href="/title/tt0147800/keywords" onClick="(new Image()).src='/rg/title-tease/keywords/images/b.gif?link=/title/tt0147800/keywords';">more</a>
  7. </div>
  8. <div class="info">
  9. <h5>Tagline:</h5>
  10. How do I loathe thee? Let me count the ways. <a class="tn15more inline" href="/title/tt0147800/taglines" onClick="(new Image()).src='/rg/title-tease/taglines/images/b.gif?link=/title/tt0147800/taglines';">more</a>
  11. </div>
  12. <div class="info">


 
je souhaite récuperer les genres, j'utilise cette commande:
 

Code :
  1. sed -n 's/.*\/Sections\/Genres\/.*\/\(.*\)\/">.*/\1/p' imdb.txt


 
et a chaque fois il ne me retourne que Romance
 
je ne vois pas ou j'ai loupé et je lutte avec les expr regulières !
 
merci à toute aide !

mood
Publicité
Posté le 02-05-2009 à 19:35:55  profilanswer
 

n°1132486
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 02-05-2009 à 20:04:56  profilanswer
 

C'est pas vraiment le bon outil sed, ton xml peut avoir des retours à la ligne partout et sed lui bosse ligne par ligne...
 
Sinon ton problème est simple : .* choppe toujours le maximum de truc, donc dans

Citation :

<a href="/Sections/Genres/Comedy/">Comedy</a> | <a href="/Sections/Genres/Romance/">Romance</a> <a class="tn15more inline" href="/title/tt0147800/keywords" onClick="(new Image()).src='/rg/title-tease/keywords/images/b.gif?link=/title/tt0147800/keywords';">more</a>


le plus grand truc que ton .*\/Sections peut attraper c'est

Citation :

<a href="/Sections/Genres/Comedy/">Comedy</a> | <a href="/Sections


 
 
Sinon tu peux utiliser autre chose que '/' comme séparateur (genre s@toto@tutu), ca t'évitera de devoir protéger les / du xml


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°1132489
ppic
Posté le 02-05-2009 à 20:30:15  profilanswer
 

ok effctivement c plus clair en changeant de séparateur c'est déjà plus clair

Code :
  1. sed -n 's#.*<a href="/Sections/Genres/\(.*\)/">.*#\1#p' imdb.txt


 
par contre je ne vois pas quoi utiliser d'autre que sed pour cela, toute suggestion est bienvenue :D
 
est-il possible tout de meme de sortir les 2 résultats avec sed?

n°1132496
ppic
Posté le 02-05-2009 à 21:22:25  profilanswer
 

plus précisement, au point ou j'en suis, j'ai un fichier temp qui contient:

 
Code :
  1. Comedy/">Comedy</a> | <a href="/Sections/Genres/Drama/">Drama</a> | <a href="/Sections/Genres/Romance/">Romance</a>
 

je cherche a extraire Comedy / Drama / Romance
chacun est en cadré par /"> et </a>, il doit bien exister un moyen :)


Message édité par ppic le 02-05-2009 à 21:35:57
n°1132534
ppic
Posté le 03-05-2009 à 01:33:54  profilanswer
 

j'ai avancé!
j'en suis au remplacement dans le fichier
 
sed 's/<genre>.*<\/genre>/$genre/' $chemin > test.nfo
 
le pb, c'est que dans le fichier, il m'ecris $genre au lieu du contenu
 
et si je fais:
 
sed 's/<genre>.*<\/genre>/'"$genre"'/' $chemin > test.nfo
 
j'ai le droit à:
sed: bad format in substitution expression

n°1132554
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 03-05-2009 à 08:46:45  profilanswer
 

Tu peux tout englober avec des " plutôt qu'avec des ', et ton $genre sera substitué par sa valeur


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°1132578
ppic
Posté le 03-05-2009 à 11:45:19  profilanswer
 

j'ai essayé:
sed "s/<genre>.*<\/genre>/${genre}/" $chemin
 
résultat:
sed: -e expression #1, char 27: unknown option to `s'

n°1132579
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 03-05-2009 à 11:51:54  profilanswer
 

ppic a écrit :

j'ai essayé:
sed "s/<genre>.*<\/genre>/${genre}/" $chemin
 
résultat:
sed: -e expression #1, char 27: unknown option to `s'


 
ton $genre contient quoi ?


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°1132582
ppic
Posté le 03-05-2009 à 12:03:35  profilanswer
 

ça:
/ / War / History / Action
 
ça viendrait des / ?

n°1132583
ppic
Posté le 03-05-2009 à 12:06:41  profilanswer
 

trouvé!
 
sed "s@<genre>.*</genre>@$genre@" $chemin
 
ta question m'a mis la puce a l'oreille !
 
merci

mood
Publicité
Posté le 03-05-2009 à 12:06:41  profilanswer
 

n°1132597
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 03-05-2009 à 12:57:37  profilanswer
 

ppic a écrit :

trouvé!
 
sed "s@<genre>.*</genre>@$genre@" $chemin
 
ta question m'a mis la puce a l'oreille !
 
merci


 
 
et oui ;) si ton truc final ressemble à s/dfe/ere/wfew/rer/wer/er/er/e  c'est non valide pour sed


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°1132603
ppic
Posté le 03-05-2009 à 13:08:56  profilanswer
 

vi il interprete les /
 
j'en ai perdu des cheveux la dessus !
dur de se remettre au script des fois :D
 
merci a toi !

n°1132755
sputnick
bip...bip...bip...bip...bi...b
Posté le 03-05-2009 à 22:23:35  profilanswer
 

J'ai rajouté les headers ( le minimum vital ), car pour moi ce n'est pas du XML mais du HTML.
 

Code :
  1. <html>
  2. <head></head>
  3. <body>
  4. <a class="tn15more inline" href="/title/tt0147800/releaseinfo" onClick="(new Image()).src='/rg/title-tease/releasedates/images/b.gif?link=/title/tt0147800/releaseinfo';">more</a>
  5. </div>
  6. <div class="info">
  7. <h5>Genre:</h5>
  8. <a href="/Sections/Genres/Comedy/">Comedy</a> | <a href="/Sections/Genres/Romance/">Romance</a> <a class="tn15more inline" href="/title/tt0147800/keywords" onClick="(new Image()).src='/rg/title-tease/keywords/images/b.gif?link=/title/tt0147800/keywords';">more</a>
  9. </div>
  10. <div class="info">
  11. <h5>Tagline:</h5>
  12. How do I loathe thee? Let me count the ways. <a class="tn15more inline" href="/title/tt0147800/taglines" onClick="(new Image()).src='/rg/title-tease/taglines/images/b.gif?link=/title/tt0147800/taglines';">more</a>
  13. </div>
  14. <div class="info">
  15. </body>
  16. </html>


 
Voici le code :

Code :
  1. mech-dump --links /tmp/l.html | awk -F'/' '/Genres/ {print $4}'


 
Mais le mieux serais d'apprendre un language de dernière génération comme perl, ruby, python, car pour ce qui est de parser du HTML avec sed, c'est rarement une bonne idée. Ils ont tous des classes/modules qui permettent de faire ça proprement, CF -> http://htmlparsing.icenine.ca/doku.php

n°1132760
ppic
Posté le 03-05-2009 à 23:10:25  profilanswer
 

je comprend bien le point de vue, mais c'est une opération a faire une seule fois sur 400 fichier.
j'ai pour le moment trouvé la solution, je ne peux par contre pas testé la tienne, mech-dump n'est pas dispo chez moi (je suis sur un nas synology)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [SHELL] probleme recherche sed

 

Sujets relatifs
Gros problème avec RAID5extraire des infos d'une fichier xml (en perl)
auto montage linux dans un domaine active directoryRecherche script Pendule avec aiguille de qualité
Problème configuration micro sous Skype ou Audacity...[shell script] Mettre des espaces entre les caractères
[SHELL] Script de backup (cron) : Ameliorations ?postgrey problème de démarrage
problème apt-get ubuntuEgroupware : Funambol problème de synchro pour les non admin
Plus de sujets relatifs à : [SHELL] probleme recherche sed


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR