probleme recherche sed [SHELL] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 02-05-2009 à 20:04:56
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
Marsh Posté le 02-05-2009 à 20:30:15
ok effctivement c plus clair en changeant de séparateur c'est déjà plus clair
Code :
|
par contre je ne vois pas quoi utiliser d'autre que sed pour cela, toute suggestion est bienvenue
est-il possible tout de meme de sortir les 2 résultats avec sed?
Marsh Posté le 02-05-2009 à 21:22:25
plus précisement, au point ou j'en suis, j'ai un fichier temp qui contient:
Code :
|
je cherche a extraire Comedy / Drama / Romance
chacun est en cadré par /"> et </a>, il doit bien exister un moyen
Marsh Posté le 03-05-2009 à 01:33:54
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
Marsh Posté le 03-05-2009 à 08:46:45
Tu peux tout englober avec des " plutôt qu'avec des ', et ton $genre sera substitué par sa valeur
Marsh Posté le 03-05-2009 à 11:45:19
j'ai essayé:
sed "s/<genre>.*<\/genre>/${genre}/" $chemin
résultat:
sed: -e expression #1, char 27: unknown option to `s'
Marsh Posté le 03-05-2009 à 11:51:54
ppic a écrit : j'ai essayé: |
ton $genre contient quoi ?
Marsh Posté le 03-05-2009 à 12:06:41
trouvé!
sed "s@<genre>.*</genre>@$genre@" $chemin
ta question m'a mis la puce a l'oreille !
merci
Marsh Posté le 03-05-2009 à 12:57:37
ppic a écrit : trouvé! |
et oui si ton truc final ressemble à s/dfe/ere/wfew/rer/wer/er/er/e c'est non valide pour sed
Marsh Posté le 03-05-2009 à 13:08:56
vi il interprete les /
j'en ai perdu des cheveux la dessus !
dur de se remettre au script des fois
merci a toi !
Marsh Posté le 03-05-2009 à 22:23:35
J'ai rajouté les headers ( le minimum vital ), car pour moi ce n'est pas du XML mais du HTML.
Code :
|
Voici le code :
Code :
|
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
Marsh Posté le 03-05-2009 à 23:10:25
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)
Marsh Posté le 02-05-2009 à 19:35:55
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:
je souhaite récuperer les genres, j'utilise cette commande:
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 !