Pages : 1
#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
Pages : 1