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
 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 !