Utilisation de SED
Résolu
pcsystemd
Messages postés
702
Date d'inscription
Statut
Membre
Dernière intervention
-
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
dans mon script bash j'ai ceci :
Comme on peut voir ci-dessous quand je lance mon script en DEBUG,sed me récupéré bien les valeurs mais j'ai une erreur SED avant d'envoyer le mail qui est vide :
+ sed -e '
s/\bDATE\b/22-02-2012/
s/\bEVENT\b/
82|01/01/2012
80|01/02/2012 00:00:00 CET/
s/\bNSOL\b/329256/
' stats.tpl
sed: -e expression #1, char 49: unknown option to 's'
+ mail -s 'blabla 22-02-2012' toto@mail.fr
Une idée?
Merci
dans mon script bash j'ai ceci :
DATE='date '+%d-%m-%Y'' EVENT='cat event_mois_${DATE}.txt' NSOL='cat sol_${DATE}.txt' sed -e " s/\bDATE\b/${DATE}/ s/\bEVENT\b/${EVENT}/ s/\bNSOL\b/${NSOL}/ " stats.tpl | mail -s "blabla ${DATE}" toto@mail.fr
Comme on peut voir ci-dessous quand je lance mon script en DEBUG,sed me récupéré bien les valeurs mais j'ai une erreur SED avant d'envoyer le mail qui est vide :
+ sed -e '
s/\bDATE\b/22-02-2012/
s/\bEVENT\b/
82|01/01/2012
80|01/02/2012 00:00:00 CET/
s/\bNSOL\b/329256/
' stats.tpl
sed: -e expression #1, char 49: unknown option to 's'
+ mail -s 'blabla 22-02-2012' toto@mail.fr
Une idée?
Merci
A voir également:
- Utilisation de SED
- Utilisation chromecast - Guide
- Télécharger gratuitement notice d'utilisation - Guide
- La ressource demandée est en cours d'utilisation ✓ - Forum Logiciels
- Family link temps d'utilisation ne fonctionne pas - Forum Contrôle parental
- Impossible d'utiliser ce numéro de téléphone pour la validation - Forum Gmail
6 réponses
Salut,
Apparemment dans ta chaîne de remplacement il y a des slashs (/) ;-((
Remplace donc le caractère délimiteur (caractère slash par défaut) de la commande substitution, par un autre caractère (le dièse "#" par exemple) :
;-))
s/\bEVENT\b/ 82|01/01/2012 80|01/02/2012 00:00:00 CET/
Apparemment dans ta chaîne de remplacement il y a des slashs (/) ;-((
Remplace donc le caractère délimiteur (caractère slash par défaut) de la commande substitution, par un autre caractère (le dièse "#" par exemple) :
sed -e " s#\bDATE\b#${DATE}# s#\bEVENT\b#${EVENT}# s#\bNSOL\b#${NSOL}# " stats.tpl | mail -s "blabla ${DATE}" toto@mail.fr
;-))
Salut,
Même problème mais avec une erreur différente :
sed: -e expression #1, char 66: unterminated 's' command
Merci
L'accès au savoir est la première liberté que chaque homme devrait avoir.
Même problème mais avec une erreur différente :
sed: -e expression #1, char 66: unterminated 's' command
Merci
L'accès au savoir est la première liberté que chaque homme devrait avoir.
Voici le contenu des variables :
DATE=22-02-2012
EVENT =50|01/02/2010 00:00:00 CET
77|01/03/2010 00:00:00 CET
62|01/04/2010 00:00:00 CEST
48|01/05/2010 00:00:00 CEST
44|01/06/2010 00:00:00 CEST
41|01/07/2010 00:00:00 CEST
42|01/08/2010 00:00:00 CEST
66|01/09/2010 00:00:00 CEST
etc..
NSOL=256489
DATE=22-02-2012
EVENT =50|01/02/2010 00:00:00 CET
77|01/03/2010 00:00:00 CET
62|01/04/2010 00:00:00 CEST
48|01/05/2010 00:00:00 CEST
44|01/06/2010 00:00:00 CEST
41|01/07/2010 00:00:00 CEST
42|01/08/2010 00:00:00 CEST
66|01/09/2010 00:00:00 CEST
etc..
NSOL=256489
Bon apparemment "sed" n'aime pas trop la substitution avec une variable ayant des sauts de ligne (s#\bEVENT\b#${EVENT}#) ;-((.
Donc je te propose de remplacer cette ligne par :
Ici le flag "e" (pour exécuter) va demander à "sed" de substituer le motif par le résultat de la commande "cat event_mois_${DATE}.txt".
;-))
Donc je te propose de remplacer cette ligne par :
s#\bEVENT\b#cat event_mois_${DATE}.txt#e
Ici le flag "e" (pour exécuter) va demander à "sed" de substituer le motif par le résultat de la commande "cat event_mois_${DATE}.txt".
$ echo "${DATE}" 22-02-2012 $ cat event_22-02-2012.txt 50|01/02/2010 00:00:00 CET 77|01/03/2010 00:00:00 CET 62|01/04/2010 00:00:00 CEST 48|01/05/2010 00:00:00 CEST 44|01/06/2010 00:00:00 CEST 41|01/07/2010 00:00:00 CEST 42|01/08/2010 00:00:00 CEST 66|01/09/2010 00:00:00 CEST $ echo "${NSOL}" 256489 $ cat plop Nous sommes le DATE Voici les évenements : EVENT Et voici le contenu de la variable (nsol) : NSOL $ sed "s#DATE#${DATE}# s#EVENT#cat event_${DATE}.txt#e s#NSOL#${NSOL}# " plop Nous sommes le 22-02-2012 Voici les évenements : 50|01/02/2010 00:00:00 CET 77|01/03/2010 00:00:00 CET 62|01/04/2010 00:00:00 CEST 48|01/05/2010 00:00:00 CEST 44|01/06/2010 00:00:00 CEST 41|01/07/2010 00:00:00 CEST 42|01/08/2010 00:00:00 CEST 66|01/09/2010 00:00:00 CEST Et voici le contenu de la variable (nsol) : 256489 $
;-))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question