Erreur SED scritp Bash
Résolu
pcsystemd
Messages postés
702
Date d'inscription
Statut
Membre
Dernière intervention
-
pcsystemd Messages postés 702 Date d'inscription Statut Membre Dernière intervention -
pcsystemd Messages postés 702 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
dans un script bash j'utilise SED pour tagguer mon template(template.tpl) ce que j'ai fait a maintes reprises sans problème mais la je ne comprend pas car j'ai toujours l'erreur suivante :
Voici mon code:
Si vous souhaiter voir mon script sh en entier pour plus de compréhension, dites le moi.
Merci
dans un script bash j'utilise SED pour tagguer mon template(template.tpl) ce que j'ai fait a maintes reprises sans problème mais la je ne comprend pas car j'ai toujours l'erreur suivante :
sed: -e expression #1, char 69: unknown option to 's'
Voici mon code:
sed -e " s/\bODAE\b/${ODAE}/ s/\bDATE\b/${DATE}/ s/\bUTIT\b/${UTIT}/ s/\bTOTTR\b/${TOTTR}/ " template.tpl | mail -s "Message du ${OLDATE} au ${DATE}" toto@mail.com
Si vous souhaiter voir mon script sh en entier pour plus de compréhension, dites le moi.
Merci
A voir également:
- Erreur SED scritp Bash
- Bingo bash - Télécharger - Divers Jeux
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
10 réponses
hello
est-ce qu'une des variables contient un / ?
si oui, utiliser un autre séparateur
est-ce qu'une des variables contient un / ?
si oui, utiliser un autre séparateur
sed -e " s+\bODAE\b+${ODAE}+ ...
Merci dubcek,
mais je n'ai pas de / dans mes variables et dans le cas ou j'ai testé ce que tu m'indiques mais j'ai toujours la même erreur.
mais je n'ai pas de / dans mes variables et dans le cas ou j'ai testé ce que tu m'indiques mais j'ai toujours la même erreur.
Salut,
A défaut, affiches-nous le contenu de chaque variable, il doit y avoir un caractère qui fiche le bronx quelque part ;-\
A défaut, affiches-nous le contenu de chaque variable, il doit y avoir un caractère qui fiche le bronx quelque part ;-\
Bonjour,
voici les variables :
Je me suis aperçu en faites après qu'il y avait un / comme dubcek me l'a signalé donc j'ai remplacé comme il me l'indiques le séparateur du sed par + comme cela :
mais j'ai toujours l'erreur suivante :
Merci
L'accès au savoir est la première liberté que chaque homme devrait avoir.
voici les variables :
UTIT="cat ${TMPDIR}/ut_tr21_${DATE}.lst" TOTTR="cat ${TMPDIR}/to_stats_${DATE}.lst" DATE='date '+%d-%m-%Y'' ODAE='date -d '-2 day' '+%d-%m-%Y''
Je me suis aperçu en faites après qu'il y avait un / comme dubcek me l'a signalé donc j'ai remplacé comme il me l'indiques le séparateur du sed par + comme cela :
sed -e " s+\bODAE\b+${ODAE}/ s+\bDATE\b+${DATE}/ s+\bUTIT\b+${UTIT}/ s+\bTOTTR\b+${TOTTR}/ " template.tpl | mail -s "Message du ${OLDATE} au ${DATE}" toto@mail.com
mais j'ai toujours l'erreur suivante :
sed: -e expression #1, char 25: unterminated 's' command
Merci
L'accès au savoir est la première liberté que chaque homme devrait avoir.
Re-
Je me suis aperçu en faites après qu'il y avait un / comme dubcek me l'a signalé donc j'ai remplacé comme il me l'indiques le séparateur du sed par + comme cela :
Il ne faut pas oublier de remplacer TOUS les caractères, y compris le dernier ;-((
Je me suis aperçu en faites après qu'il y avait un / comme dubcek me l'a signalé donc j'ai remplacé comme il me l'indiques le séparateur du sed par + comme cela :
Il ne faut pas oublier de remplacer TOUS les caractères, y compris le dernier ;-((
sed -e " s+\bODAE\b+${ODAE}+ s+\bDATE\b+${DATE}+ s+\bUTIT\b+${UTIT}+ s+\bTOTTR\b+${TOTTR}+ " template.tpl | mail -s "Message du ${OLDATE} au ${DATE}" toto@mail.com
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
En effet merci de le signaler mais malheureusement l'erreur persiste.
sed: -e expression #1, char 88: unterminated 's' command
sed: -e expression #1, char 88: unterminated 's' command
Ok, mais déjà la source du problème change à chaque correction :
sed: -e expression #1, char 69: unknown option to 's'
sed: -e expression #1, char 25: unterminated 's' command
sed: -e expression #1, char 88: unterminated 's' command
Peux-tu afficher le contenu de chaque variable avec un echo s'il te plaît ?
sed: -e expression #1, char 69: unknown option to 's'
sed: -e expression #1, char 25: unterminated 's' command
sed: -e expression #1, char 88: unterminated 's' command
Peux-tu afficher le contenu de chaque variable avec un echo s'il te plaît ?
UTIT="cat ${TMPDIR}/ut_tr21_${DATE}.lst" echo "${UTIT}" TOTTR="cat ${TMPDIR}/to_stats_${DATE}.lst" echo "${TOTTR}" DATE='date '+%d-%m-%Y'' echo "${DATE}" ODAE='date -d '-2 day' '+%d-%m-%Y'' echo "${ODAE}"
Voila le contenu des variables :
UTIT="cat ${TMPDIR}/ut_tr21_${DATE}.lst"
echo "${UTIT}"
cat /tmp/user/ut_tr21_18-03-2011.lst
TOTTR="cat ${TMPDIR}/to_stats_${DATE}.lst"
echo "${TOTTR}"
cat /tmp/user/to_stats_18-03-2011.lst
DATE='date '+%d-%m-%Y''
echo "${DATE}"
18-03-2011
ODAE='date -d '-2 day' '+%d-%m-%Y''
echo "${ODAE}"
16-03-2011
si au lieu de mettre des doubles côtes je mets :
UTIT='cat ${TMPDIR}/ut_tr21_${DATE}.lst'
echo "${UTIT}"
cela affiche le contenu de mon fichier ut_tr21_18-03-2011.lst
Merci
UTIT="cat ${TMPDIR}/ut_tr21_${DATE}.lst"
echo "${UTIT}"
cat /tmp/user/ut_tr21_18-03-2011.lst
TOTTR="cat ${TMPDIR}/to_stats_${DATE}.lst"
echo "${TOTTR}"
cat /tmp/user/to_stats_18-03-2011.lst
DATE='date '+%d-%m-%Y''
echo "${DATE}"
18-03-2011
ODAE='date -d '-2 day' '+%d-%m-%Y''
echo "${ODAE}"
16-03-2011
si au lieu de mettre des doubles côtes je mets :
UTIT='cat ${TMPDIR}/ut_tr21_${DATE}.lst'
echo "${UTIT}"
cela affiche le contenu de mon fichier ut_tr21_18-03-2011.lst
Merci
si au lieu de mettre des doubles côtes je mets :
UTIT='cat ${TMPDIR}/ut_tr21_${DATE}.lst'
echo "${UTIT}"
cela affiche le contenu de mon fichier ut_tr21_18-03-2011.lst
Et ce n'est pas le but recherché ?
Tu veux vraiment que ta variable contienne :
cat ...
et non pas le contenu du fichier ?
Donc remplacer dans ton template "UTIT" par "cat /tmp/user/ut_tr21_18-03-2011.lst" ?
Essaie de substituer chaque ligne interprétée une à une :
UTIT='cat ${TMPDIR}/ut_tr21_${DATE}.lst'
echo "${UTIT}"
cela affiche le contenu de mon fichier ut_tr21_18-03-2011.lst
Et ce n'est pas le but recherché ?
Tu veux vraiment que ta variable contienne :
cat ...
et non pas le contenu du fichier ?
Donc remplacer dans ton template "UTIT" par "cat /tmp/user/ut_tr21_18-03-2011.lst" ?
Essaie de substituer chaque ligne interprétée une à une :
sed 's+\bUTIT\b+cat /tmp/user/ut_tr21_18-03-2011.lst+' template.tpl
sed 's+\bUTIT\b+cat /tmp/user/ut_tr21_18-03-2011.lst+' template.tpl
me renvoi dans mon template.tpl a la place du tag UTIT :
cat /tmp/user/ut_tr21_18-03-2011.ls
et pas le contenu du fichier.
Je n'y comprends plus rien car j'ai fait cela des multiples fois sans aucun souci.
Merci en tout cas pour ton aide.
non le but rechercher c'est qu'il me renvoi le contenu du fichier. J'ai d'autres scripts avec la même syntaxe et il me renvoi bien le contenu du fichier mais pas dans ce script et c'est cela qui me rends perplexe.
c'est pareil pour les autres sauf pour
s+\bODAE\b+${ODAE}+
s+\bDATE\b+${DATE}+
dont j'ai bien la date.
Merci
c'est pareil pour les autres sauf pour
s+\bODAE\b+${ODAE}+
s+\bDATE\b+${DATE}+
dont j'ai bien la date.
Merci
Bonjour,
cela ne change rien. J'ai toujours :
sed: -e expression #1, char 88: unterminated 's' command
J'en perds mon latin.
Merci
cela ne change rien. J'ai toujours :
sed: -e expression #1, char 88: unterminated 's' command
J'en perds mon latin.
Merci