Aller au contenu

Sed Et Synology


ppic

Messages recommandés

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?

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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 :D

A+ :hi:

Fred.

Lien vers le commentaire
Partager sur d’autres sites

piouf, aller, une mini nuit et on réattaque :D

@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.

Lien vers le commentaire
Partager sur d’autres sites

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 !

Lien vers le commentaire
Partager sur d’autres sites

cool j'avance bien :D

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"

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.