Utilisation de SED

Résolu
pcsystemd Messages postés 734 Statut Membre -  
zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   -
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



--
L'accès au savoir est la première liberté que chaque homme devrait avoir.

6 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    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
  2. pcsystemd Messages postés 734 Statut Membre 23
     
    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
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Peux-tu afficher le contenu des variables "${DATE}", "${EVENT}" et "${NSOL}" ?
      0
  3. pcsystemd Messages postés 734 Statut Membre 23
     
    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
  4. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. pcsystemd Messages postés 734 Statut Membre 23
     
    Merci zipe31,

    je teste demain et je te tiens au courant.

    Bonne soirée.
    0
  7. pcsystemd Messages postés 734 Statut Membre 23
     
    Salut zipe31,

    cela fonctionne parfaitement. Je te remercie encore.

    Bonne journée
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      De rien ;-))
      0