Utilisation de SED [Résolu/Fermé]

Signaler
Messages postés
569
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
10 mars 2020
-
Messages postés
35321
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
4 août 2020
-
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

Messages postés
35321
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
4 août 2020
5 315
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
569
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
10 mars 2020
16
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.
Messages postés
35321
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
4 août 2020
5 315
Peux-tu afficher le contenu des variables "${DATE}", "${EVENT}" et "${NSOL}" ?
Messages postés
569
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
10 mars 2020
16
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
35321
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
4 août 2020
5 315
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
569
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
10 mars 2020
16
Merci zipe31,

je teste demain et je te tiens au courant.

Bonne soirée.
Messages postés
569
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
10 mars 2020
16
Salut zipe31,

cela fonctionne parfaitement. Je te remercie encore.

Bonne journée
Messages postés
35321
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
4 août 2020
5 315
De rien ;-))