Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 05/05/2008, à 07:31

pcsystemd

Variables et Sed .

Bonjour,

voila une partie de mon script shell mais j'ai une erreur de synthaxe SED :

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 votes simples 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
else
       echo 'error' | mail -s "statistiques votes: nombre de votes simples et doubles le ${DATE}" toto@toto.fr
fi

je lance mon script et voila l'erreur que j'ai :

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

je pense que l'erreur vient de la ligne :

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

et que cela doit etre un problème avec les variables. J'ai essayé entre cotes simples, cote doubles mais pareil.

Auriez vous une idée?

Merci

Dernière modification par pcsystemd (Le 05/05/2008, à 07:34)

Hors ligne

#2 Le 05/05/2008, à 18:04

Alain.g

Re : Variables et Sed .

Salut

ça doit être la valeur d'une des variables qui contient le délimiteur (/)
par exemple :

 a="/texte/" ; echo "contenu=" | sed "s/$/$a/"
sed: -e expression n°1, caractère 6: option inconnue pour `s'

alors qu'en changer le délimiteur :

a="/texte/" ; echo "contenu=" | sed "s:$:$a:"
contenu=/texte/

ou en laissant le même mais en échappant ceux que contiennent la variable :

a="/texte/" ; echo "contenu=" | sed "s/$/${a////\/}/"
contenu=/texte/

Dernière modification par Alain.g (Le 05/05/2008, à 18:07)


Xubuntu Karmic !

Hors ligne

#3 Le 05/05/2008, à 22:19

pcsystemd

Re : Variables et Sed .

Bonsoir,

j'ai suivi ton info et j'ai echappé apr le % au lieu du / mais j'ai toujours la meme erreur. Voici le bout de script avec lequel je me bats depuis plusieurs jours

 
TMPDIR="/tmp/`whoami`"
DATESOLD=`date -d '-1 month' '+%B'`
CONFI="$(sed -n '1p' ${TMPDIR}/nb_votes_old.lst)"
SIMPL="$(sed -n '2p' ${TMPDIR}/nb_votes_old.lst)"

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

l'erreur est :

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

Merci

Hors ligne

#4 Le 05/05/2008, à 22:55

Alain.g

Re : Variables et Sed .

Essaie en supprimant les variables une à une pour cerner celle(s) qui pose(nt) problème. S'il y a en à une seule qui pose problème, tu verras vite en fonction de son contenu ce qui coince.

À part un souci de délimiteur, je ne vois trop ce qui pourrait clocher. En tout cas en essayant ta commande sed comme ça, elle fonctionne.
la valeur $CONFI ne contiendrait pas un % par hasard ?


Xubuntu Karmic !

Hors ligne

#5 Le 06/05/2008, à 11:19

pcsystemd

Re : Variables et Sed .

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

Hors ligne