Utilisation de SED

Résolu/Fermé
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 - 22 févr. 2012 à 15:09
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 23 févr. 2012 à 09:14
Bonjour,

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








6 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
22 févr. 2012 à 15:16
Salut,

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

;-))
0
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
Modifié par pcsystemd le 22/02/2012 à 15:26
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.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
22 févr. 2012 à 15:33
Peux-tu afficher le contenu des variables "${DATE}", "${EVENT}" et "${NSOL}" ?
0
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
22 févr. 2012 à 16:44
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
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
22 févr. 2012 à 17:09
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 :
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


$

;-))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
22 févr. 2012 à 17:17
Merci zipe31,

je teste demain et je te tiens au courant.

Bonne soirée.
0
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
23 févr. 2012 à 08:26
Salut zipe31,

cela fonctionne parfaitement. Je te remercie encore.

Bonne journée
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
23 févr. 2012 à 09:14
De rien ;-))
0