Bienvenue visiteur (Inscription |  Connexion)
Qui est en ligne ?
Il y a : 17 utilisateurs en ligne, consultez le détail
Auteur Message
pcsystemd
#0 Message posté le : 05-05-2008 à 18:20:02


Petit scarabée


Forum : Inscrit
Association :
Arrivé(e) le : 05-05-2008
Nombre de messages : 3
Bonjour,
voila une partie de mon script shell :

if [ -f "${TMPDIR}/nb_votes_${DATE}.lst" ]

then

    CONFI="$(sed -n '1p' ${TMPDIR}/nb_votes_old.lst)"

    SIMPL="$(sed -n '2p' ${TMPDIR}/nb_votes_old.lst)"

	echo 'nombre de vote simple et doubles au '${DATE} >> ${TMPDIR}/stat_${DATE}.lst

	cat ${TMPDIR}/nb_votes_${DATE}.lst | sed -e 's/|//g;1 {s/.*/& (contre '"${CONFI}"' en '"${DATEOLD}"')/};2 {s/.*/& (contre '"${SIMPL}"' en '"${DATEOLD}"')/}' >> ${TMPDIR}/stat_${DATE}.lst 

	cat ${TMPDIR}/nb_votes_${DATE}.lst | sed -e 's/[^[:digit:]]//g' > ${TMPDIR}/nb_votes_old.lst



mais quand je l'execute j'ai l'erreur suivante :

sed: -e expression #1, char 37: Unknown option to 's' 



Je pense que cela a un rapport avec les variables présentes dans l'expression de sed.

Avez vous une idée?

Merci
Azollyx
#1 Message posté le : 05-05-2008 à 19:34:46


Hobbit


Forum : Modérateur
Association : Membre actif
Arrivé(e) le : 09-04-2006
Nombre de messages : 1866
À vue de nez, je dirais que la date ($DATEOLD par exemple) contient le caractère '/'.
Juste avant ce passage, ajoute
set -x
et set +x après pour que Bash affiche les commandes avant de les exécuter. Cela nous permettra d'y voir beaucoup plus clair.

Tu n'es pas obligé d'utiliser des barres obliques avec sed ; tu peux utiliser le caractère que tu veux, du moment qu'il n'est pas présent dans la chaîne (ou échappé pour sed --- une erreur récurrente consiste à échapper les caractères pour Bash mais pas pour sed). Essaye de changer {s/.*/& (contre '"${CONFI}"' en '"${DATEOLD}"')/};2 {s/.*/& (contre '"${SIMPL}"' en '"${DATEOLD}"')/} en
{s%.*%& (contre '"${CONFI}"' en '"${DATEOLD}"')%};2 {s%.*%& (contre '"${SIMPL}"' en '"${DATEOLD}"')%}


--Message édité par Azollyx le 05-05-2008 à 19:35:52--


-------------------------------------
Azollyx Horaldius [http://www.azollyx.eu/]
pcsystemd
#2 Message posté le : 05-05-2008 à 20:49:46


Petit scarabée


Forum : Inscrit
Association :
Arrivé(e) le : 05-05-2008
Nombre de messages : 3
Bonjour,

set -xv

pas de problème si je defini mes variables une a une depuis un shell et que je les execute en mode DEBUG

$ CONFI="$(sed -n '1p' /${TMPDIR}/nb_votes_old.lst)"
sed -n '1p' /${TMPDIR}/nb_votes_old.lst
++ sed -n 1p //tmp//nb_cotes_old.lst
+ CONFI=14594

sauf pour

$ cat ${TMPDIR}/nb_votes_${DATE}.lst | sed -e 's/|//g;1 {s/.*/& (contre '"${CONFI}"' en '"${DATEOLD"')/};2 {s/.*/& (contre '"${SIMPL}"' en '"${DATEOLD}"')/}' >> ${TMPDIR}/stat_${DATE}.lst
+ cat /tmp/nb_votes_.lst
+ sed -e 's/|//g;1 {s/.*/& (contre '"${CONFI}"' en )/};2 {s/.*/& (contre '"${SIMPL}"' en )/}'
sed: -e expression #1, char 27: Unknown option to 's'

je vais essayé ce que tu dis voir et je te tiens au courant .

Merci

--Message édité par pcsystemd le 05-05-2008 à 20:52:33--
Azollyx
#3 Message posté le : 05-05-2008 à 22:16:23


Hobbit


Forum : Modérateur
Association : Membre actif
Arrivé(e) le : 09-04-2006
Nombre de messages : 1866
pcsystemd a écrit :


+ sed -e 's/|//g;1 {s/.*/& (contre '"${CONFI}"' en )/};2 {s/.*/& (contre '"${SIMPL}"' en )/}'
sed: -e expression #1, char 27: Unknown option to 's'

C'est étrange comme résultat : Bash n'affiche pas le résultat de la substitution des variables...

-------------------------------------
Azollyx Horaldius [http://www.azollyx.eu/]
pcsystemd
#4 Message posté le : 05-05-2008 à 22:46:25


Petit scarabée


Forum : Inscrit
Association :
Arrivé(e) le : 05-05-2008
Nombre de messages : 3
c'est mon souci justement cette erreur.
pcsystemd
#5 Message posté le : 06-05-2008 à 12:19:33


Petit scarabée


Forum : Inscrit
Association :
Arrivé(e) le : 05-05-2008
Nombre de messages : 3
Bon voila c'est résolu cela venait de la version de SED en version 3.2 cela ne fonctionne pas mais en 4 oui.

Merci
Azollyx
#6 Message posté le : 06-05-2008 à 18:57:48


Hobbit


Forum : Modérateur
Association : Membre actif
Arrivé(e) le : 09-04-2006
Nombre de messages : 1866
pcsystemd a écrit :


Bon voila c'est résolu

Dans ce cas, tu as un lien en haut à gauche qui te permet de modifier le statut du fil.

-------------------------------------
Azollyx Horaldius [http://www.azollyx.eu/]