ppic Posté(e) le 3 mai 2009 Posté(e) le 3 mai 2009 bonjour, j'ai l'impression que la commande sed dispo sur les syno n'est pas standard. je m'explique: sed 's/<genre>.*<\/genre>/$genre/' $chemin avec cette commande <genre>.*<\/genre> est remplacé par $genre, et non par son contenu. après diverse recherche, je trouve qu'il faut des " au lieu des ' pour que la variable puisse se substituer. mais lorsque je tente: sed "s/<genre>.*<\/genre>/$genre/" $chemin voici le resultat: sed: -e expression #1, char 27: unknown option to `s' je ne comprend pas, j'ai essayé quelques dizaine de solution en vain, comment puis je remplacer ma chaine par cette satané variable?
catimimi Posté(e) le 3 mai 2009 Posté(e) le 3 mai 2009 bonjour, j'ai l'impression que la commande sed dispo sur les syno n'est pas standard. je m'explique: sed 's/<genre>.*<\/genre>/$genre/' $chemin avec cette commande <genre>.*<\/genre> est remplacé par $genre, et non par son contenu. après diverse recherche, je trouve qu'il faut des " au lieu des ' pour que la variable puisse se substituer. mais lorsque je tente: sed "s/<genre>.*<\/genre>/$genre/" $chemin voici le resultat: sed: -e expression #1, char 27: unknown option to `s' je ne comprend pas, j'ai essayé quelques dizaine de solution en vain, comment puis je remplacer ma chaine par cette satané variable? Oui, "sed" est un peu spécial et "tr" n'est pas implémenté. J'ai mis dans la zone de téléchargements "coreutils" compilé pour processeurs arn et powerpc. Tu y trouveras notamment "tr" qu'il te suffit de mettre dans le répertoire /bin avec les droits 755 et pour owner root:root, pour pouvoir l'utiliser. Cordialement. Michel.
fredlime Posté(e) le 3 mai 2009 Posté(e) le 3 mai 2009 Bonjour, Essai en entourant ta variable d'un guillement simple. sed 's/<genre>.*<\/genre>/'$genre'/' $chemin Le probleme, je le voie surtout sur le <\/genre> et les slash anti-slash qui peuvent être dans ta variable. Pour t'en affranchir, il faudrait utiliser un autre caractère comme séparateur. exemple avec un arobase @: sed 's@<genre>.*</genre>@'$genre'@' $chemin Plein d'autres astuces, cela dépends de tes besoins, mais sa fonctionne A+ Fred.
ppic Posté(e) le 3 mai 2009 Auteur Posté(e) le 3 mai 2009 piouf, aller, une mini nuit et on réattaque @fredlime, avec ta soluce, je n'ai pas plus de résultat sed: -e expression #1, char 20: unterminated `s' command @catimini: tr me permettrai de faire ce que je souhaite? je vais aller regarder ça. en tout cas merci de votre aide.
ppic Posté(e) le 3 mai 2009 Auteur Posté(e) le 3 mai 2009 hum en fait me demande! ma variable contient ça : / / War / History / Action ok, je suis trop bete! sed "s@<genre>.*</genre>@$genre@" $chemin ça marche. quand je pense au nombre de cheveux perdu pour ça ! merci !
ppic Posté(e) le 3 mai 2009 Auteur Posté(e) le 3 mai 2009 cool j'avance bien je vous poste mon script le but, mettre a jour la balise genre des nfo qui se trouve dans chaque rep de film: FILM -film1 --film1.nfo -film2 --film2.nfo prochaine étape, mettre a jour le tag studio. je vous poste mon code pour ceux que ça interesse, ou ceux qui veulent tout simplement m'aider a rédiger le code. d'ailleur j'aimerai un petit truc que je vois pas comment faire, je sais que certains nfo n'ont pas d'id imdb renseigné, en ce cas, je veux passer la suite des opération et passer a la ligne suivante de list.txt #!/bin/sh # URL="http://www.imdb.com/title/"; > error.log ls > list.txt #élimination des fichiers while read line; do if [ "$line" == "@eaDir" ] then echo "$line bad filename" >> error.log elif [ "$line" == "Thumbs.db" ] then echo "$line bad filename" >> error.log elif [ "$line" == "list.txt" ] then echo "$line bad filename" >> error.log elif [ "$line" == "tag.sh" ] then echo "$line bad filename" >> error.log elif [ "$line" == "error.log" ] then echo "$line bad filename" >> error.log elif [ "$line" == "imdb.txt" ] then echo "$line bad filename" >> error.log elif [ "$line" == "test.nfo" ] then echo "$line bad filename" >> error.log elif [ "$line" == "temp.txt" ] then echo "$line bad filename" >> error.log #récup de l'id imbd dans le nfo else TEST="$line" cd "$TEST" NFO=$(ls *.nfo) cd .. chemin="$TEST/$NFO" id=$(grep id.*tt.*id "$chemin") #echo $id id=$(echo "$id" | sed -n 's/.*>\(.*\)<.*/\1/p') #construction de l'url imdb="$URL$id/" #echo $imdb #récupération de la page imdb result=$(curl -s $imdb) #traitement du genre echo "$result" | sed -n 's#<a href="/Sections/Genres/\(.*\) <a class=.*#\1#p' > temp.txt temp_genre=$(awk -F\| '{print $1}' temp.txt | sed -n 's/.*">\(.*\)<.*/\1/p') genre=" $temp_genre" temp_genre=$(awk -F\| '{print $2}' temp.txt | sed -n 's/.*">\(.*\)<.*/\1/p') genre=" $temp_genre /$genre" temp_genre=$(awk -F\| '{print $3}' temp.txt | sed -n 's/.*">\(.*\)<.*/\1/p') genre=" $temp_genre /$genre" temp_genre=$(awk -F\| '{print $4}' temp.txt | sed -n 's/.*">\(.*\)<.*/\1/p') genre=" $temp_genre /$genre" temp_genre=$(awk -F\| '{print $5}' temp.txt | sed -n 's/.*">\(.*\)<.*/\1/p') genre=" $temp_genre /$genre" #remplacement du genre dans le nfo genre="<genre>$genre</genre>" sed "s@<genre>.*</genre>@$genre@" "$chemin" > temp.nfo mv temp.nfo "$chemin" rm temp.nfo echo "$chemin -> nfo a jour" fi done<"list.txt"
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.