Menu

Utilisation de SED [Résolu/Fermé]

Messages postés
558
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
19 juin 2019
- - Dernière réponse : zipe31
Messages postés
36624
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
19 juillet 2019
- 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








Afficher la suite 

6 réponses

Messages postés
36624
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
19 juillet 2019
3708
0
Merci
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

;-))
Messages postés
558
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
19 juin 2019
16
0
Merci
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.
zipe31
Messages postés
36624
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
19 juillet 2019
3708 -
Peux-tu afficher le contenu des variables "${DATE}", "${EVENT}" et "${NSOL}" ?
Messages postés
558
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
19 juin 2019
16
0
Merci
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
Messages postés
36624
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
19 juillet 2019
3708
0
Merci
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


$

;-))
Messages postés
558
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
19 juin 2019
16
0
Merci
Merci zipe31,

je teste demain et je te tiens au courant.

Bonne soirée.
Messages postés
558
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
19 juin 2019
16
0
Merci
Salut zipe31,

cela fonctionne parfaitement. Je te remercie encore.

Bonne journée
zipe31
Messages postés
36624
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
19 juillet 2019
3708 -
De rien ;-))