Script Shell et AWK
Fermé
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
-
13 mai 2008 à 10:07
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 16 mai 2008 à 13:22
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 16 mai 2008 à 13:22
A voir également:
- Script Shell et AWK
- Script vidéo youtube - Guide
- Classic shell windows 11 - Télécharger - Personnalisation
- Ghost script - Télécharger - Polices de caractères
- Script bat - Guide
- Microsoft activation script - Accueil - Windows
11 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
13 mai 2008 à 10:17
13 mai 2008 à 10:17
Salut,
Il faudrait peut être expliqué ce que font les portions de codes avec "sed", tout le monde n'est pas à même de comprendre ces parties là, tu ne crois pas ?
Quelques explications seraient donc les bienvenues.
Pour les variables VENTE et LOC, ceci devrait faire l'affaire (en adaptant le numéro de ligne) :
Il faudrait peut être expliqué ce que font les portions de codes avec "sed", tout le monde n'est pas à même de comprendre ces parties là, tu ne crois pas ?
Quelques explications seraient donc les bienvenues.
Pour les variables VENTE et LOC, ceci devrait faire l'affaire (en adaptant le numéro de ligne) :
awk 'NR==1 {print $0}' fichier;-))
_vince
Messages postés
37
Date d'inscription
mardi 30 janvier 2007
Statut
Membre
Dernière intervention
14 mai 2008
13 mai 2008 à 10:29
13 mai 2008 à 10:29
Comme l'a dit jipicy, quelques explications seraient les bienvenues. Tout le monde n'est pas bilingue sed/awk. Et pour resoudre un probleme, il faut d'abord l'enoncer clairement.
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
13 mai 2008 à 12:10
13 mai 2008 à 12:10
Poue répondre un peu à ton attente pour la seconde partie du "sed" :
[tmpfs]$ cat plop nombre de vote simple : | 125455 nombre de vote double : | 25645 [tmpfs]$ var=115644 [tmpfs]$ awk -F"|" 'NR==1 {print $1,$2,"(contre '"$var"' en Avril)"}' plop nombre de vote simple : 125455 (contre 115644 en Avril) [tmpfs]$;-))
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
23
13 mai 2008 à 13:55
13 mai 2008 à 13:55
Tiens, tiens merci jipicy,
j'ai besoin de quelques explications sur ce que tu m'indiques. Concernant
awk 'NR==1 {print $0}' fichier
Il faut que j'insérer cela de cette maniere
VENTE="$(sed -n '1p' ${TMPDIR}/nb_mandat_old.lst)"
avec awk
VENTE="awk NR==1 {print $0} ${TMPDIR}/nb_mandat_old.lst"
Merci
j'ai besoin de quelques explications sur ce que tu m'indiques. Concernant
awk 'NR==1 {print $0}' fichier
Il faut que j'insérer cela de cette maniere
VENTE="$(sed -n '1p' ${TMPDIR}/nb_mandat_old.lst)"
avec awk
VENTE="awk NR==1 {print $0} ${TMPDIR}/nb_mandat_old.lst"
Merci
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
>
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
13 mai 2008 à 13:59
13 mai 2008 à 13:59
Comme ceci plutôt (sans oublier les quotes autour de de l'expression "awk") :
VENTE=$(awk 'NR==1 {print $0}' ${TMPDIR}/nb_mandat_old.lst);-))
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
23
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
13 mai 2008 à 14:06
13 mai 2008 à 14:06
Ok merci.
Une question vu que tu m'a aidé pour SED. Je souhaiterais crée un fichier TEMPLATE par exemple :
vote <TAG1>
Votes olds <EMAIL>
etc..
puis depuis mon script avec SED pouvoir remplacer les champs entre <> dans mon template.
Est ce possible?
Merci
Une question vu que tu m'a aidé pour SED. Je souhaiterais crée un fichier TEMPLATE par exemple :
vote <TAG1>
Votes olds <EMAIL>
etc..
puis depuis mon script avec SED pouvoir remplacer les champs entre <> dans mon template.
Est ce possible?
Merci
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
>
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
13 mai 2008 à 14:11
13 mai 2008 à 14:11
Oui c'est possible. Après reste à savoir quoi, quand, où et comment en fonction des besoins...
Comme toujours, il faut des exemples concrets !!!
Avant => Après
Comme toujours, il faut des exemples concrets !!!
Avant => Après
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
23
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
13 mai 2008 à 14:37
13 mai 2008 à 14:37
Bon prenons l'exemple que tu connais :
je créais un fichier toto.tpl qui sera mon template (ce sera le fichier que j'enverais par mail. il sera de forme suivante
Bonjour,
Voici les résultats du <DATE>
Nombre de votes simple = <RESULT> contre <RESULTOLD> du <DATEOLD>
Nombre de vote doubles = <RESULT> contre <RESULTOLD> du <DATEOLD>
etc..
puis un deuxieme fichier toto.sh contenant mon script avec SED
Voila je ne sais pas si j'ai été clair car je ne sais pas trop comment m'y prendre.
Merci
je créais un fichier toto.tpl qui sera mon template (ce sera le fichier que j'enverais par mail. il sera de forme suivante
Bonjour,
Voici les résultats du <DATE>
Nombre de votes simple = <RESULT> contre <RESULTOLD> du <DATEOLD>
Nombre de vote doubles = <RESULT> contre <RESULTOLD> du <DATEOLD>
etc..
puis un deuxieme fichier toto.sh contenant mon script avec SED
Voila je ne sais pas si j'ai été clair car je ne sais pas trop comment m'y prendre.
Merci
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
23
13 mai 2008 à 12:58
13 mai 2008 à 12:58
Désolé, effectivement je vais expliqué ce que fait le script :
VENTE="$(sed -n '1p' ${TMPDIR}/nb_votes_old.lst)"
LOC="$(sed -n '2p' ${TMPDIR}/nb_votes_old.lst)"
sont les variables qui permettent de recuperer dans le fichier ${TMPDIR}/nb_votes_old.lst le resultat de la ligne 1 et de la ligne 2 grace a SED
cat ${TMPDIR}/nb_votes_${DATE}.lst | sed -e "s%|%%g;1 {s%.*%& (contre ${VENTE} en ${DATEOLD})%};2 {s%.*%& (contre ${LOC} en ${DATEOLD})%}" >> ${TMPDIR}/stat_${DATE}.lst
permet d'inserer dans le fichier stat le contenu du fichier nb_votes et d'inserer a la fin de la ligne 1 et 2 le contenu des variables VENTE et LOC toujours grace a SED via des expressions regulieres
VENTE="$(sed -n '1p' ${TMPDIR}/nb_votes_old.lst)"
LOC="$(sed -n '2p' ${TMPDIR}/nb_votes_old.lst)"
sont les variables qui permettent de recuperer dans le fichier ${TMPDIR}/nb_votes_old.lst le resultat de la ligne 1 et de la ligne 2 grace a SED
cat ${TMPDIR}/nb_votes_${DATE}.lst | sed -e "s%|%%g;1 {s%.*%& (contre ${VENTE} en ${DATEOLD})%};2 {s%.*%& (contre ${LOC} en ${DATEOLD})%}" >> ${TMPDIR}/stat_${DATE}.lst
permet d'inserer dans le fichier stat le contenu du fichier nb_votes et d'inserer a la fin de la ligne 1 et 2 le contenu des variables VENTE et LOC toujours grace a SED via des expressions regulieres
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
13 mai 2008 à 15:36
13 mai 2008 à 15:36
En espérant avoir compris ta demande. A adapter bien sûr...
[tmpfs]$ cat toto.tpl Bonjour, Voici les résultats du <DATE> Nombre de votes simple = <RESULT1> contre <VENTE> du <DATEOLD> Nombre de vote doubles = <RESULT2> contre <LOC> du <DATEOLD> etc.. [tmpfs]$ cat toto.sh #! /bin/bash DATE=$(date '+%A %d %B %Y') DATEOLD=$(date -d '1 months ago' '+%A %d %B %Y') # VENTE="$(sed -n '1p' ${TMPDIR}/nb_votes_old.lst)" VENTE=xxxxx # LOC="$(sed -n '2p' ${TMPDIR}/nb_votes_old.lst)" LOC=yyyyy RESULT1=XXXXX RESULT2=YYYYY sed ' s/<DATE>/'"${DATE}"'/ s/<VENTE>/'"${VENTE}"'/ s/<LOC>/'"${LOC}"'/ s/<RESULT1>/'"${RESULT1}"'/ s/<RESULT2>/'"${RESULT2}"'/ s/<DATEOLD>/'"${DATEOLD}"'/ ' toto.tpl > fichier_mail.txt [tmpfs]$ ./toto.sh [tmpfs]$ cat fichier_mail.txt Bonjour, Voici les résultats du mardi 13 mai 2008 Nombre de votes simple = XXXXX contre xxxxx du dimanche 13 avril 2008 Nombre de vote doubles = YYYYY contre yyyyy du dimanche 13 avril 2008 etc.. [tmpfs]$;-))
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
23
13 mai 2008 à 16:09
13 mai 2008 à 16:09
Merci beaucoup c'est vraiment super.
J'ai deux questions :
je ne comprends pas
# VENTE="$(sed -n '1p' ${TMPDIR}/nb_votes_old.lst)"
VENTE=xxxxx
tu veux dire par la que VENTE=xxxxx est le resultat de VENTE="$(sed -n '1p' ${TMPDIR}/nb_votes_old.lst)" que je dois inserer dans mon script?
Merci
J'ai deux questions :
je ne comprends pas
# VENTE="$(sed -n '1p' ${TMPDIR}/nb_votes_old.lst)"
VENTE=xxxxx
tu veux dire par la que VENTE=xxxxx est le resultat de VENTE="$(sed -n '1p' ${TMPDIR}/nb_votes_old.lst)" que je dois inserer dans mon script?
Merci
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
>
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
13 mai 2008 à 16:16
13 mai 2008 à 16:16
En fait j'ai mis en commentaire ta variable (avec sa syntaxe) car je n'avais pas de quoi la définir et du coup j'en ai créé une factice pour pouvoir faire mes tests et te montrer un exemple concret...
Désolé j'aurai du le préciser ;-(
Par contre j'avais bien marqué en début de message "A adapter..." ;-))
Désolé j'aurai du le préciser ;-(
Par contre j'avais bien marqué en début de message "A adapter..." ;-))
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
23
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
13 mai 2008 à 17:47
13 mai 2008 à 17:47
Dans la commande qui suit si je veux envoyer le fichier toto.tpl par mail est ce que je peux faire
sed '
s/<DATE>/'"${DATE}"'/
s/<VENTE>/'"${VENTE}"'/
s/<LOC>/'"${LOC}"'/
s/<RESULT1>/'"${RESULT1}"'/
s/<RESULT2>/'"${RESULT2}"'/
s/<DATEOLD>/'"${DATEOLD}"'/
'
cat toto.tpl | mail -s '' toto@toto.fr
MErci
sed '
s/<DATE>/'"${DATE}"'/
s/<VENTE>/'"${VENTE}"'/
s/<LOC>/'"${LOC}"'/
s/<RESULT1>/'"${RESULT1}"'/
s/<RESULT2>/'"${RESULT2}"'/
s/<DATEOLD>/'"${DATEOLD}"'/
'
cat toto.tpl | mail -s '' toto@toto.fr
MErci
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
>
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
13 mai 2008 à 17:51
13 mai 2008 à 17:51
C'est quoi la commande ? Le tout ?
Ou uniquement "cat toto.tpl | mail -s '' toto@toto.fr" ?
Ou uniquement "cat toto.tpl | mail -s '' toto@toto.fr" ?
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
23
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
13 mai 2008 à 17:56
13 mai 2008 à 17:56
Dans l'exemple que tu me donne
sed '
s/<DATE>/'"${DATE}"'/
s/<VENTE>/'"${VENTE}"'/
s/<LOC>/'"${LOC}"'/
s/<RESULT1>/'"${RESULT1}"'/
s/<RESULT2>/'"${RESULT2}"'/
s/<DATEOLD>/'"${DATEOLD}"'/
' toto.tpl > fichier_mail.txt
tu traite le fichier toto.tpl que tu redirige vers fichier_mail.txt hors ce que je souhaiterais c'est envoyer le fichier toto.tpl par mail directement depuis mon script par exemple avec
sed '
s/<DATE>/'"${DATE}"'/
s/<VENTE>/'"${VENTE}"'/
s/<LOC>/'"${LOC}"'/
s/<RESULT1>/'"${RESULT1}"'/
s/<RESULT2>/'"${RESULT2}"'/
s/<DATEOLD>/'"${DATEOLD}"'/
' cat toto.tpl | mail -s '' toto@toto.fr
Est ce que cela est possible ?
Voila une partie de mon script qu'en pense tu?
touch ${TMPDIR}/stat_${DATE}.lst
if [ -f "${TMPDIR}/nb_push_${DATE}.lst" ]
then
NBPUSH=`cat ${TMPDIR}/nb_push_${DATE}.lst`
NBPUSHOLD=`cat ${TMPDIR}/nb_push_old.lst`
mv -f ${TMPDIR}/nb_push_${DATE}.lst ${TMPDIR}/nb_push_old.lst
fi
if [ -f "${TMPDIR}/nb_newsletter_${DATE}.lst" ]
then
NBNEWSLETTER=`cat ${TMPDIR}/nb_newsletter_${DATE}.lst`
NBNEWSLETTEROLD=`cat ${TMPDIR}/nb_newsletter_old.lst`
mv -f ${TMPDIR}/nb_newsletter_${DATE}.lst ${TMPDIR}/nb_newsletter_old.lst
fi
if [ -f "${TMPDIR}/nb_cdc_${DATE}.lst" ]
then
NBCDC=`cat ${TMPDIR}/nb_cdc_${DATE}.lst`
NBCDCOLD=`cat ${TMPDIR}/nb_cdc_old.lst`
mv -f ${TMPDIR}/nb_cdc_${DATE}.lst ${TMPDIR}/nb_cdc_old.lst
fi
if [ -f "${TMPDIR}/nb_${DATE}.lst" ]
then
cat ${TMPDIR}/nb_${DATE}.lst | sed -e 's%|%%g;s%[^[:digit:]]%%g' >> ${TMPDIR}/stat_${DATE}.lst
CONFI="$(sed -n '1p' ${TMPDIR}/stat_${DATE}.lst)"
SIMPL="$(sed -n '2p' ${TMPDIR}/stat_${DATE}.lst)"
CONFIOLD="$(sed -n '1p' ${TMPDIR}/nb_old.lst)"
SIMPLOLD="$(sed -n '2p' ${TMPDIR}/nb_old.lst)"
cat ${TMPDIR}/nb_${DATE}.lst | sed -e 's%[^[:digit:]]%%g' > ${TMPDIR}/nb_old.lst
fi
if [ -f "${TMPDIR}/nb_votes_${DATE}.lst" ]
then
cat ${TMPDIR}/nb_votes_${DATE}.lst | sed -e 's%|%%g;s%[^[:digit:]]%%g' >> ${TMPDIR}/stat_${DATE}.lst
VENTE="$(sed -n '3p' ${TMPDIR}/stat_${DATE}.lst)"
LOC="$(sed -n '4p' ${TMPDIR}/stat_${DATE}.lst)"
VENTEOLD="$(sed -n '1p' ${TMPDIR}/nb_votes_old.lst)"
LOCOLD="$(sed -n '2p' ${TMPDIR}/nb_votes_old.lst)"
cat ${TMPDIR}/nb_votes_${DATE}.lst | sed -e 's%[^[:digit:]]%%g' > ${TMPDIR}/nb_votes_old.lst
fi
sed '
s/<DATE>/'"${DATE}"'/
s/<PUSH>/'"${PUSH}"'/
s/<PUSHOLD>/'"${PUSHOLD}"'/
s/<NBNEWSLETTER>/'"${NBNEWSLETTER}"'/
s/<NBNEWSLETTEROLD>/'"${NBNEWSLETTEROLD}"'/
s/<NBCDC>/'"${NBCDC}"'/
s/<NBCDCOLD>/'"${NBCDCOLD}"'/
s/<VENTE>/'"${VENTE}"'/
s/<LOC>/'"${LOC}"'/
s/<VENTEOLD>/'"${VENTEOLD}"'/
s/<LOCOLD>/'"${LOCOLD}"'/
s/<CONFI>/'"${CONFI}"'/
s/<SIMPL>/'"${SIMPL}"'/
s/<CONFIOLD>/'"${CONFIOLD}"'/
s/<SIMPLOLD>/'"${SIMPLOLD}"'/
s/<DATEOLD>/'"${DATEOLD}"'/
'
cat toto.tpl | mail -s '' toto@toto.fr
Merci
sed '
s/<DATE>/'"${DATE}"'/
s/<VENTE>/'"${VENTE}"'/
s/<LOC>/'"${LOC}"'/
s/<RESULT1>/'"${RESULT1}"'/
s/<RESULT2>/'"${RESULT2}"'/
s/<DATEOLD>/'"${DATEOLD}"'/
' toto.tpl > fichier_mail.txt
tu traite le fichier toto.tpl que tu redirige vers fichier_mail.txt hors ce que je souhaiterais c'est envoyer le fichier toto.tpl par mail directement depuis mon script par exemple avec
sed '
s/<DATE>/'"${DATE}"'/
s/<VENTE>/'"${VENTE}"'/
s/<LOC>/'"${LOC}"'/
s/<RESULT1>/'"${RESULT1}"'/
s/<RESULT2>/'"${RESULT2}"'/
s/<DATEOLD>/'"${DATEOLD}"'/
' cat toto.tpl | mail -s '' toto@toto.fr
Est ce que cela est possible ?
Voila une partie de mon script qu'en pense tu?
touch ${TMPDIR}/stat_${DATE}.lst
if [ -f "${TMPDIR}/nb_push_${DATE}.lst" ]
then
NBPUSH=`cat ${TMPDIR}/nb_push_${DATE}.lst`
NBPUSHOLD=`cat ${TMPDIR}/nb_push_old.lst`
mv -f ${TMPDIR}/nb_push_${DATE}.lst ${TMPDIR}/nb_push_old.lst
fi
if [ -f "${TMPDIR}/nb_newsletter_${DATE}.lst" ]
then
NBNEWSLETTER=`cat ${TMPDIR}/nb_newsletter_${DATE}.lst`
NBNEWSLETTEROLD=`cat ${TMPDIR}/nb_newsletter_old.lst`
mv -f ${TMPDIR}/nb_newsletter_${DATE}.lst ${TMPDIR}/nb_newsletter_old.lst
fi
if [ -f "${TMPDIR}/nb_cdc_${DATE}.lst" ]
then
NBCDC=`cat ${TMPDIR}/nb_cdc_${DATE}.lst`
NBCDCOLD=`cat ${TMPDIR}/nb_cdc_old.lst`
mv -f ${TMPDIR}/nb_cdc_${DATE}.lst ${TMPDIR}/nb_cdc_old.lst
fi
if [ -f "${TMPDIR}/nb_${DATE}.lst" ]
then
cat ${TMPDIR}/nb_${DATE}.lst | sed -e 's%|%%g;s%[^[:digit:]]%%g' >> ${TMPDIR}/stat_${DATE}.lst
CONFI="$(sed -n '1p' ${TMPDIR}/stat_${DATE}.lst)"
SIMPL="$(sed -n '2p' ${TMPDIR}/stat_${DATE}.lst)"
CONFIOLD="$(sed -n '1p' ${TMPDIR}/nb_old.lst)"
SIMPLOLD="$(sed -n '2p' ${TMPDIR}/nb_old.lst)"
cat ${TMPDIR}/nb_${DATE}.lst | sed -e 's%[^[:digit:]]%%g' > ${TMPDIR}/nb_old.lst
fi
if [ -f "${TMPDIR}/nb_votes_${DATE}.lst" ]
then
cat ${TMPDIR}/nb_votes_${DATE}.lst | sed -e 's%|%%g;s%[^[:digit:]]%%g' >> ${TMPDIR}/stat_${DATE}.lst
VENTE="$(sed -n '3p' ${TMPDIR}/stat_${DATE}.lst)"
LOC="$(sed -n '4p' ${TMPDIR}/stat_${DATE}.lst)"
VENTEOLD="$(sed -n '1p' ${TMPDIR}/nb_votes_old.lst)"
LOCOLD="$(sed -n '2p' ${TMPDIR}/nb_votes_old.lst)"
cat ${TMPDIR}/nb_votes_${DATE}.lst | sed -e 's%[^[:digit:]]%%g' > ${TMPDIR}/nb_votes_old.lst
fi
sed '
s/<DATE>/'"${DATE}"'/
s/<PUSH>/'"${PUSH}"'/
s/<PUSHOLD>/'"${PUSHOLD}"'/
s/<NBNEWSLETTER>/'"${NBNEWSLETTER}"'/
s/<NBNEWSLETTEROLD>/'"${NBNEWSLETTEROLD}"'/
s/<NBCDC>/'"${NBCDC}"'/
s/<NBCDCOLD>/'"${NBCDCOLD}"'/
s/<VENTE>/'"${VENTE}"'/
s/<LOC>/'"${LOC}"'/
s/<VENTEOLD>/'"${VENTEOLD}"'/
s/<LOCOLD>/'"${LOCOLD}"'/
s/<CONFI>/'"${CONFI}"'/
s/<SIMPL>/'"${SIMPL}"'/
s/<CONFIOLD>/'"${CONFIOLD}"'/
s/<SIMPLOLD>/'"${SIMPLOLD}"'/
s/<DATEOLD>/'"${DATEOLD}"'/
'
cat toto.tpl | mail -s '' toto@toto.fr
Merci
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
13 mai 2008 à 18:12
13 mai 2008 à 18:12
Pour rappel, le fichier "toto.tpl" est un TEMPLATE, donc il est sensé ne pas être modifié, d'où la redirection dans un fichier.
Mais tu peux très bien faire (et je viens de tester et ça marche très bien) :
Mais tu peux très bien faire (et je viens de tester et ça marche très bien) :
sed ' s/<DATE>/'"${DATE}"'/ s/<VENTE>/'"${VENTE}"'/ s/<LOC>/'"${LOC}"'/ s/<RESULT1>/'"${RESULT1}"'/ s/<RESULT2>/'"${RESULT2}"'/ s/<DATEOLD>/'"${DATEOLD}"'/ ' toto.tpl | mail -s "Envoi du ${DATE}" toto@toto.fr;-))
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
23
13 mai 2008 à 18:23
13 mai 2008 à 18:23
Ah oui effectivement suis je bête le fichier TEMPLATE ne doit pas etre modifier mais alors comment faire pour envoyer le résultat du template par mail?
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
>
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
13 mai 2008 à 18:24
13 mai 2008 à 18:24
Ben je viens de te donner la solution au-dessus !!!
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
23
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
13 mai 2008 à 20:41
13 mai 2008 à 20:41
ah pardon ok donc cela devrait etre bon :
sed '
s/<DATE>/'"${DATE}"'/
s/<VENTE>/'"${VENTE}"'/
s/<LOC>/'"${LOC}"'/
s/<RESULT1>/'"${RESULT1}"'/
s/<RESULT2>/'"${RESULT2}"'/
s/<DATEOLD>/'"${DATEOLD}"'/
' toto.tpl > fichier_mail.txt | mail -s '' toto@toto.fr
Merci beaucoup et bonne soirée
sed '
s/<DATE>/'"${DATE}"'/
s/<VENTE>/'"${VENTE}"'/
s/<LOC>/'"${LOC}"'/
s/<RESULT1>/'"${RESULT1}"'/
s/<RESULT2>/'"${RESULT2}"'/
s/<DATEOLD>/'"${DATEOLD}"'/
' toto.tpl > fichier_mail.txt | mail -s '' toto@toto.fr
Merci beaucoup et bonne soirée
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
>
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
13 mai 2008 à 22:10
13 mai 2008 à 22:10
Non ! Tu n'as pas besoin de la redirection vers le fichier "fichier_mail.txt", tu l'envoies directement à travers le "pipe" vers la commande "mail" :
sed ' ... ... ... ' toto.tpl | mail -s '' toto@toto.frRegarde à nouveau mon exemple, tu peux même y mettre la date d'envoi comme sujet de ton mail.
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
13 mai 2008 à 22:40
13 mai 2008 à 22:40
Pour reprendre ton script :
touch ${TMPDIR}/stat_${DATE}.lst if [ -f "${TMPDIR}/nb_push_${DATE}.lst" ] then NBPUSH=`cat ${TMPDIR}/nb_push_${DATE}.lst` NBPUSHOLD=`cat ${TMPDIR}/nb_push_old.lst` mv -f ${TMPDIR}/nb_push_${DATE}.lst ${TMPDIR}/nb_push_old.lst fi if [ -f "${TMPDIR}/nb_newsletter_${DATE}.lst" ] then NBNEWSLETTER=`cat ${TMPDIR}/nb_newsletter_${DATE}.lst` NBNEWSLETTEROLD=`cat ${TMPDIR}/nb_newsletter_old.lst` mv -f ${TMPDIR}/nb_newsletter_${DATE}.lst ${TMPDIR}/nb_newsletter_old.lst fi if [ -f "${TMPDIR}/nb_cdc_${DATE}.lst" ] then NBCDC=`cat ${TMPDIR}/nb_cdc_${DATE}.lst` NBCDCOLD=`cat ${TMPDIR}/nb_cdc_old.lst` mv -f ${TMPDIR}/nb_cdc_${DATE}.lst ${TMPDIR}/nb_cdc_old.lst fi if [ -f "${TMPDIR}/nb_${DATE}.lst" ] then cat ${TMPDIR}/nb_${DATE}.lst | sed -e 's%|%%g;s%[^[:digit:]]%%g' >> ${TMPDIR}/stat_${DATE}.lst CONFI="$(sed -n '1p' ${TMPDIR}/stat_${DATE}.lst)" SIMPL="$(sed -n '2p' ${TMPDIR}/stat_${DATE}.lst)" CONFIOLD="$(sed -n '1p' ${TMPDIR}/nb_old.lst)" SIMPLOLD="$(sed -n '2p' ${TMPDIR}/nb_old.lst)" cat ${TMPDIR}/nb_${DATE}.lst | sed -e 's%[^[:digit:]]%%g' > ${TMPDIR}/nb_old.lst fi if [ -f "${TMPDIR}/nb_votes_${DATE}.lst" ] then cat ${TMPDIR}/nb_votes_${DATE}.lst | sed -e 's%|%%g;s%[^[:digit:]]%%g' >> ${TMPDIR}/stat_${DATE}.lst VENTE="$(sed -n '3p' ${TMPDIR}/stat_${DATE}.lst)" LOC="$(sed -n '4p' ${TMPDIR}/stat_${DATE}.lst)" VENTEOLD="$(sed -n '1p' ${TMPDIR}/nb_votes_old.lst)" LOCOLD="$(sed -n '2p' ${TMPDIR}/nb_votes_old.lst)" cat ${TMPDIR}/nb_votes_${DATE}.lst | sed -e 's%[^[:digit:]]%%g' > ${TMPDIR}/nb_votes_old.lst fi sed ' s/<DATE>/'"${DATE}"'/ s/<PUSH>/'"${PUSH}"'/ s/<PUSHOLD>/'"${PUSHOLD}"'/ s/<NBNEWSLETTER>/'"${NBNEWSLETTER}"'/ s/<NBNEWSLETTEROLD>/'"${NBNEWSLETTEROLD}"'/ s/<NBCDC>/'"${NBCDC}"'/ s/<NBCDCOLD>/'"${NBCDCOLD}"'/ s/<VENTE>/'"${VENTE}"'/ s/<LOC>/'"${LOC}"'/ s/<VENTEOLD>/'"${VENTEOLD}"'/ s/<LOCOLD>/'"${LOCOLD}"'/ s/<CONFI>/'"${CONFI}"'/ s/<SIMPL>/'"${SIMPL}"'/ s/<CONFIOLD>/'"${CONFIOLD}"'/ s/<SIMPLOLD>/'"${SIMPLOLD}"'/ s/<DATEOLD>/'"${DATEOLD}"'/ ' toto.tpl | mail -s "Envoi du ${DATE}" toto@toto.fr;-))
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
23
14 mai 2008 à 07:32
14 mai 2008 à 07:32
Y a t-il une importance que la ligne
toto.tpl | mail -s "Envoi du ${DATE}" toto@toto.fr soit au niveau de la derniere cote (') du sed?
Merci
toto.tpl | mail -s "Envoi du ${DATE}" toto@toto.fr soit au niveau de la derniere cote (') du sed?
Merci
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
>
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
14 mai 2008 à 07:37
14 mai 2008 à 07:37
Oui ;-))
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
23
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
14 mai 2008 à 08:30
14 mai 2008 à 08:30
Ok merci beaucoup et bonne journée.
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
23
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
14 mai 2008 à 13:35
14 mai 2008 à 13:35
Bon voila j'ai testé mon script mais j'ai deux erreurs :
sed: -e expression #1, char 295: Extra characters after command
Null message body; hope that's ok
je reçois le mail mais vide apparement mon template n'est pas pris en compte serais ce qu'il n'est pas dans le meme repertoire pourtant j'ai adapte le chemin :
sed '
s/<DATE>/'"${DATE}"'/
s/<PUSH>/'"${PUSH}"'/
s/<PUSHOLD>/'"${PUSHOLD}"'/
s/<NBNEWSLETTER>/'"${NBNEWSLETTER}"'/
s/<NBNEWSLETTEROLD>/'"${NBNEWSLETTEROLD}"'/
s/<NBCDC>/'"${NBCDC}"'/
s/<NBCDCOLD>/'"${NBCDCOLD}"'/
s/<VENTE>/'"${VENTE}"'/
s/<LOC>/'"${LOC}"'/
s/<VENTEOLD>/'"${VENTEOLD}"'/
s/<LOCOLD>/'"${LOCOLD}"'/
s/<CONFI>/'"${CONFI}"'/
s/<SIMPL>/'"${SIMPL}"'/
s/<CONFIOLD>/'"${CONFIOLD}"'/
s/<SIMPLOLD>/'"${SIMPLOLD}"'/
s/<DATEOLD>/'"${DATEOLD}"'/
' ${TMPDIR}/stat.tpl | mail -s "stat au ${DATE}" toto@toto.fr
Merci
sed: -e expression #1, char 295: Extra characters after command
Null message body; hope that's ok
je reçois le mail mais vide apparement mon template n'est pas pris en compte serais ce qu'il n'est pas dans le meme repertoire pourtant j'ai adapte le chemin :
sed '
s/<DATE>/'"${DATE}"'/
s/<PUSH>/'"${PUSH}"'/
s/<PUSHOLD>/'"${PUSHOLD}"'/
s/<NBNEWSLETTER>/'"${NBNEWSLETTER}"'/
s/<NBNEWSLETTEROLD>/'"${NBNEWSLETTEROLD}"'/
s/<NBCDC>/'"${NBCDC}"'/
s/<NBCDCOLD>/'"${NBCDCOLD}"'/
s/<VENTE>/'"${VENTE}"'/
s/<LOC>/'"${LOC}"'/
s/<VENTEOLD>/'"${VENTEOLD}"'/
s/<LOCOLD>/'"${LOCOLD}"'/
s/<CONFI>/'"${CONFI}"'/
s/<SIMPL>/'"${SIMPL}"'/
s/<CONFIOLD>/'"${CONFIOLD}"'/
s/<SIMPLOLD>/'"${SIMPLOLD}"'/
s/<DATEOLD>/'"${DATEOLD}"'/
' ${TMPDIR}/stat.tpl | mail -s "stat au ${DATE}" toto@toto.fr
Merci
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
>
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
14 mai 2008 à 13:55
14 mai 2008 à 13:55
Bon alors, déjà est-ce que tes variables sont susceptibles de contenir des caractères comme un "/" (slash) ?
Compte les caractères à partir de la 1ère quote de "sed" pour déterminer où se situe l'erreur...
Ensuite, rajoute "set -xv" en début de script (après le shebang (#! /bin/bash)) pour voir si toutes tes variables sont bien interprétées...
Avant d'essayer d'envoyer le mail, assures-toi que ton script marche. Retire le "| mail -s "stat au ${DATE}" toto@toto.fr " en fin de script et vois si tu as bien le résultat escompté sur la sortie standard (l'écran) !!!
Exécute chaque partie de ton script une par une, puis ajoute-les une par une aussi qu'une fois la précédente validée...
Compte les caractères à partir de la 1ère quote de "sed" pour déterminer où se situe l'erreur...
Ensuite, rajoute "set -xv" en début de script (après le shebang (#! /bin/bash)) pour voir si toutes tes variables sont bien interprétées...
Avant d'essayer d'envoyer le mail, assures-toi que ton script marche. Retire le "| mail -s "stat au ${DATE}" toto@toto.fr " en fin de script et vois si tu as bien le résultat escompté sur la sortie standard (l'écran) !!!
Exécute chaque partie de ton script une par une, puis ajoute-les une par une aussi qu'une fois la précédente validée...
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
14 mai 2008 à 14:38
14 mai 2008 à 14:38
Il m'est très difficile de deviner où se situe l'erreur comme ça ;-\
Que contient ton fichier TEMPLATE "stat_century.tpl" exactement ?
Que contient ton fichier TEMPLATE "stat_century.tpl" exactement ?
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
23
14 mai 2008 à 14:51
14 mai 2008 à 14:51
Bonjour,
Voici ce que contient mon template :
Voici les stats au <DATE>
Push :
il y a <PUSH> inscriptions au push (contre <NBPUSHOLD> en <DATEOLD>)
Newsletter :
il y a <NEWSLETTER> inscriptions à la newsletter (contre <NEWSLETTEROLD> en <DATEOLD>)
Coups :
il y a <NBCDC> coups programmés (contre <NBCDCOLD> en <DATEOLD>)
Nombre de votes simple et double au <DATE> :
nombre de votes simples : <CONFI> (contre <CONFIOLD> en <DATEOLD>)
nombre de votes doubles : <SIMPL> (contre <SIMPLOLD> en <DATEOLD>)
Nombre de votants au <DATE> :
nombre de votants simples : <VENTE> (contre <VENTEOLD> en <DATEOLD>)
nombre de votant doubles : <LOC> (contre <LOCOLD> en <DATEOLD>)
Bonne journée.
Juste une remarque j'ai comme l'impression au vu de l'erreur :
sed: -e expression #1, char 298: Unknown option to 's'
qu'il y a un souci avec le s/ de sed mais bon ce n'est qu'une remarque je ne suis pas encore assez calé pour en etre sur.
Merci
Voici ce que contient mon template :
Voici les stats au <DATE>
Push :
il y a <PUSH> inscriptions au push (contre <NBPUSHOLD> en <DATEOLD>)
Newsletter :
il y a <NEWSLETTER> inscriptions à la newsletter (contre <NEWSLETTEROLD> en <DATEOLD>)
Coups :
il y a <NBCDC> coups programmés (contre <NBCDCOLD> en <DATEOLD>)
Nombre de votes simple et double au <DATE> :
nombre de votes simples : <CONFI> (contre <CONFIOLD> en <DATEOLD>)
nombre de votes doubles : <SIMPL> (contre <SIMPLOLD> en <DATEOLD>)
Nombre de votants au <DATE> :
nombre de votants simples : <VENTE> (contre <VENTEOLD> en <DATEOLD>)
nombre de votant doubles : <LOC> (contre <LOCOLD> en <DATEOLD>)
Bonne journée.
Juste une remarque j'ai comme l'impression au vu de l'erreur :
sed: -e expression #1, char 298: Unknown option to 's'
qu'il y a un souci avec le s/ de sed mais bon ce n'est qu'une remarque je ne suis pas encore assez calé pour en etre sur.
Merci
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
14 mai 2008 à 15:03
14 mai 2008 à 15:03
il y a un souci avec le s/ de sed
D'où ma demande sur le contenu des variables, dont je ne sais toujours pas ce qu'elles contiennent ;-((
Le "set -xv" m'intéressait que pour voir l'interprétation des variables, là apparemment, le script est interrompu par l'erreur sur "sed", avant même une quelconque interprétation de quoi que ce soit ;-(((
Donc, affiche moi le contenu de chaque variable, sans quoi je ne suis d'aucune utilité.
Dans le TEMPLATE, on peut aussi virer les chevrons (< et >) qui ne servent à rien vu que chaque partie à remplacer est un mot en majuscule...
Il se peut aussi que ce soit ça qui gène dans "sed" vu que c'est un caractère utilisé pour les regex.
D'où ma demande sur le contenu des variables, dont je ne sais toujours pas ce qu'elles contiennent ;-((
Le "set -xv" m'intéressait que pour voir l'interprétation des variables, là apparemment, le script est interrompu par l'erreur sur "sed", avant même une quelconque interprétation de quoi que ce soit ;-(((
Donc, affiche moi le contenu de chaque variable, sans quoi je ne suis d'aucune utilité.
Dans le TEMPLATE, on peut aussi virer les chevrons (< et >) qui ne servent à rien vu que chaque partie à remplacer est un mot en majuscule...
Il se peut aussi que ce soit ça qui gène dans "sed" vu que c'est un caractère utilisé pour les regex.
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
23
14 mai 2008 à 15:43
14 mai 2008 à 15:43
Voila ce que contienne mes variables
NBPUSH="$(sed -n '1p' ${TMPDIR}/stat_${DATE}.lst)"
NBPUSHOLD=`cat ${TMPDIR}/nb_push_old.lst`
NBNEWSLETTER="$(sed -n '2p' ${TMPDIR}/stat_${DATE}.lst)"
NBNEWSLETTEROLD=`cat ${TMPDIR}/newsletter_old.lst`
NBCDC="$(sed -n '3p' ${TMPDIR}/stat_${DATE}.lst)"
NBCDCOLD=`cat ${TMPDIR}/nb_old.lst`
CONFI="$(sed -n '4p' ${TMPDIR}/stat_${DATE}.lst)"
SIMPL="$(sed -n '5p' ${TMPDIR}/stat_${DATE}.lst)"
CONFIOLD="$(sed -n '1p' ${TMPDIR}/nb_m_old.lst)"
SIMPLOLD="$(sed -n '2p' ${TMPDIR}/nb_m_old.lst)"
VENTE="$(sed -n '6p' ${TMPDIR}/stat_${DATE}.lst)"
LOC="$(sed -n '7p' ${TMPDIR}/stat_${DATE}.lst)"
VENTEOLD="$(sed -n '1p' ${TMPDIR}/nbe_old.lst)"
LOCOLD="$(sed -n '2p' ${TMPDIR}/nbe_old.lst)"
j'ai enlevé les <> dans mon TEMPLATE puis executé hors du script la commande sed suivante :
$sed '
s/<DATE>/'"${DATE}"'/
s/<NBPUSH>/'"${PUSH}"'/
s/<NBPUSHOLD>/'"${PUSHOLD}"'/
s/<NBNEWSLETTER>/'"${NBNEWSLETTER}"'/
s/<NBNEWSLETTEROLD>/'"${NBNEWSLETTEROLD}"'/
s/<NBCDC>/'"${NBCDC}"'/
s/<NBCDCOLD>/'"${NBCDCOLD}"'/
s/<VENTE>/'"${VENTE}"'/
s/<LOC>/'"${LOC}"'/
s/<VENTEOLD>/'"${VENTEOLD}"'/
s/<LOCOLD>/'"${LOCOLD}"'/
s/<CONFI>/'"${CONFI}"'/
s/<SIMPL>/'"${SIMPL}"'/
s/<CONFIOLD>/'"${CONFIOLD}"'/
s/<SIMPLOLD>/'"${SIMPLOLD}"'/
s/<DATEOLD>/'"${DATEOLD}"'/
' stats.tpl > fichier.txt
il me creait bien le fichier fichier.txt mais aucunes variables n'est interpreté . Voici le contenu de fichier.txt
Bonjour,
Voici les stats au
Push :
il y a NBPUSH inscriptions au push (contre NBPUSHOLD en DATEOLD)
Newsletter :
il y a NBNEWSLETTER inscriptions à la newsletter (contre NBNEWSLETTEROLD en DATEOLD)
Coups :
il y a NBCDC coups programmés (contre NBCDCOLD en DATEOLD)
Nombre de votes simple et double au DATE :
nombre de votes simple : CONFI (contre CONFIOLD en DATEOLD)
nombre de votes double : SIMPL (contre SIMPLOLD en DATEOLD)
Nombre de votants simple et double au DATE :
nombre de votants simples : VENTE (contre VENTEOLD en DATEOLD)
nombre de votants doubles : LOC (contre LOCOLD en DATEOLD)
Bonne journée.
Merci
NBPUSH="$(sed -n '1p' ${TMPDIR}/stat_${DATE}.lst)"
NBPUSHOLD=`cat ${TMPDIR}/nb_push_old.lst`
NBNEWSLETTER="$(sed -n '2p' ${TMPDIR}/stat_${DATE}.lst)"
NBNEWSLETTEROLD=`cat ${TMPDIR}/newsletter_old.lst`
NBCDC="$(sed -n '3p' ${TMPDIR}/stat_${DATE}.lst)"
NBCDCOLD=`cat ${TMPDIR}/nb_old.lst`
CONFI="$(sed -n '4p' ${TMPDIR}/stat_${DATE}.lst)"
SIMPL="$(sed -n '5p' ${TMPDIR}/stat_${DATE}.lst)"
CONFIOLD="$(sed -n '1p' ${TMPDIR}/nb_m_old.lst)"
SIMPLOLD="$(sed -n '2p' ${TMPDIR}/nb_m_old.lst)"
VENTE="$(sed -n '6p' ${TMPDIR}/stat_${DATE}.lst)"
LOC="$(sed -n '7p' ${TMPDIR}/stat_${DATE}.lst)"
VENTEOLD="$(sed -n '1p' ${TMPDIR}/nbe_old.lst)"
LOCOLD="$(sed -n '2p' ${TMPDIR}/nbe_old.lst)"
j'ai enlevé les <> dans mon TEMPLATE puis executé hors du script la commande sed suivante :
$sed '
s/<DATE>/'"${DATE}"'/
s/<NBPUSH>/'"${PUSH}"'/
s/<NBPUSHOLD>/'"${PUSHOLD}"'/
s/<NBNEWSLETTER>/'"${NBNEWSLETTER}"'/
s/<NBNEWSLETTEROLD>/'"${NBNEWSLETTEROLD}"'/
s/<NBCDC>/'"${NBCDC}"'/
s/<NBCDCOLD>/'"${NBCDCOLD}"'/
s/<VENTE>/'"${VENTE}"'/
s/<LOC>/'"${LOC}"'/
s/<VENTEOLD>/'"${VENTEOLD}"'/
s/<LOCOLD>/'"${LOCOLD}"'/
s/<CONFI>/'"${CONFI}"'/
s/<SIMPL>/'"${SIMPL}"'/
s/<CONFIOLD>/'"${CONFIOLD}"'/
s/<SIMPLOLD>/'"${SIMPLOLD}"'/
s/<DATEOLD>/'"${DATEOLD}"'/
' stats.tpl > fichier.txt
il me creait bien le fichier fichier.txt mais aucunes variables n'est interpreté . Voici le contenu de fichier.txt
Bonjour,
Voici les stats au
Push :
il y a NBPUSH inscriptions au push (contre NBPUSHOLD en DATEOLD)
Newsletter :
il y a NBNEWSLETTER inscriptions à la newsletter (contre NBNEWSLETTEROLD en DATEOLD)
Coups :
il y a NBCDC coups programmés (contre NBCDCOLD en DATEOLD)
Nombre de votes simple et double au DATE :
nombre de votes simple : CONFI (contre CONFIOLD en DATEOLD)
nombre de votes double : SIMPL (contre SIMPLOLD en DATEOLD)
Nombre de votants simple et double au DATE :
nombre de votants simples : VENTE (contre VENTEOLD en DATEOLD)
nombre de votants doubles : LOC (contre LOCOLD en DATEOLD)
Bonne journée.
Merci
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
14 mai 2008 à 15:52
14 mai 2008 à 15:52
Ce que j'ai besoin c'est de la valeur de chaque variable une fois interprétée...
NBPUSH="$(sed -n '1p' ${TMPDIR}/stat_${DATE}.lst)"
Ok, mais moi je voudrais le résultat de :
echo "$NBPUSH"
etc.
etc.
...
Mets-moi aussi en plus des variables citées au-dessus la valeur de "${DATE}" et "${DATEOLD}"
NBPUSH="$(sed -n '1p' ${TMPDIR}/stat_${DATE}.lst)"
Ok, mais moi je voudrais le résultat de :
echo "$NBPUSH"
etc.
etc.
...
Mets-moi aussi en plus des variables citées au-dessus la valeur de "${DATE}" et "${DATEOLD}"
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
23
14 mai 2008 à 16:43
14 mai 2008 à 16:43
ok voici ce que tu demandes :
$ DATEOLD=`date -d '-1 month ago' '+%B %Y'`
DATEOLD=`date -d '-1 month ago' '+%B %Y'`
date -d '-1 month ago' '+%B %Y'
++ date -d '-1 month ago' '+%B %Y'
+ DATEOLD=June 2008
$ echo $DATEOLD
echo $DATEOLD
+ echo June 2008
June 2008
$ DATE=`date '+%d-%m-%Y'`
DATE=`date '+%d-%m-%Y'`
date '+%d-%m-%Y'
++ date +%d-%m-%Y
+ DATE=14-05-2008
$ echo $DATE
echo $DATE
+ echo 14-05-2008
14-05-2008
$ NBPUSH="$(sed -n '1p' ${TMPDIR}/stat_${DATE}.lst)"
NBPUSH="$(sed -n '1p' ${TMPDIR}/stat_${DATE}.lst)"
sed -n '1p' ${TMPDIR}/stat_${DATE}.lst
++ sed -n 1p /tmp/stat_14-05-2008.lst
+ NBPUSH=123
$ echo $NBPUSH
+ echo 123
123
$ NBPUSHOLD=`cat ${TMPDIR}/nb_push_old.lst`
NBPUSHOLD=`cat ${TMPDIR}/nb_push_old.lst`
cat ${TMPDIR}/nb_push_old.lst
++ cat /tmp/nb_push_old.lst
+ NBPUSHOLD=19687
$ echo $NBPUSHOLD
echo $NBPUSHOLD
+ echo 19687
19687
$ NBNEWSLETTER="$(sed -n '2p' ${TMPDIR}/stat_${DATE}.lst)"
NBNEWSLETTER="$(sed -n '2p' ${TMPDIR}/stat_${DATE}.lst)"
sed -n '2p' ${TMPDIR}/stat_${DATE}.lst
++ sed -n 2p /tmp/stat_14-05-2008.lst
+ NBNEWSLETTER=1234
$ echo $NBNEWSLETTER echo $NBNEWSLETTER
+ echo 1234
1234
$ NBNEWSLETTEROLD=`cat ${TMPDIR}/newsletter_old.lst`
NBNEWSLETTEROLD=`cat ${TMPDIR}/newsletter_old.lst`
cat ${TMPDIR}/newsletter_old.lst
++ cat /tmp/newsletter_old.lst
+ NBNEWSLETTEROLD=36963
$ echo $NBNEWSLETTEROLD
+ echo 36963
36963
etc.. voila pas de problème particulier
Merci
$ DATEOLD=`date -d '-1 month ago' '+%B %Y'`
DATEOLD=`date -d '-1 month ago' '+%B %Y'`
date -d '-1 month ago' '+%B %Y'
++ date -d '-1 month ago' '+%B %Y'
+ DATEOLD=June 2008
$ echo $DATEOLD
echo $DATEOLD
+ echo June 2008
June 2008
$ DATE=`date '+%d-%m-%Y'`
DATE=`date '+%d-%m-%Y'`
date '+%d-%m-%Y'
++ date +%d-%m-%Y
+ DATE=14-05-2008
$ echo $DATE
echo $DATE
+ echo 14-05-2008
14-05-2008
$ NBPUSH="$(sed -n '1p' ${TMPDIR}/stat_${DATE}.lst)"
NBPUSH="$(sed -n '1p' ${TMPDIR}/stat_${DATE}.lst)"
sed -n '1p' ${TMPDIR}/stat_${DATE}.lst
++ sed -n 1p /tmp/stat_14-05-2008.lst
+ NBPUSH=123
$ echo $NBPUSH
+ echo 123
123
$ NBPUSHOLD=`cat ${TMPDIR}/nb_push_old.lst`
NBPUSHOLD=`cat ${TMPDIR}/nb_push_old.lst`
cat ${TMPDIR}/nb_push_old.lst
++ cat /tmp/nb_push_old.lst
+ NBPUSHOLD=19687
$ echo $NBPUSHOLD
echo $NBPUSHOLD
+ echo 19687
19687
$ NBNEWSLETTER="$(sed -n '2p' ${TMPDIR}/stat_${DATE}.lst)"
NBNEWSLETTER="$(sed -n '2p' ${TMPDIR}/stat_${DATE}.lst)"
sed -n '2p' ${TMPDIR}/stat_${DATE}.lst
++ sed -n 2p /tmp/stat_14-05-2008.lst
+ NBNEWSLETTER=1234
$ echo $NBNEWSLETTER echo $NBNEWSLETTER
+ echo 1234
1234
$ NBNEWSLETTEROLD=`cat ${TMPDIR}/newsletter_old.lst`
NBNEWSLETTEROLD=`cat ${TMPDIR}/newsletter_old.lst`
cat ${TMPDIR}/newsletter_old.lst
++ cat /tmp/newsletter_old.lst
+ NBNEWSLETTEROLD=36963
$ echo $NBNEWSLETTEROLD
+ echo 36963
36963
etc.. voila pas de problème particulier
Merci
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
14 mai 2008 à 17:05
14 mai 2008 à 17:05
Pffff, je cale là :-(((
Bon essaie de virer tous les chevrons (< et >) autant du fichier TEMPLATE que dans le script, on verra bien...
Bon essaie de virer tous les chevrons (< et >) autant du fichier TEMPLATE que dans le script, on verra bien...
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
23
14 mai 2008 à 17:33
14 mai 2008 à 17:33
oui je vais faire cela.
Merci beaucoup vraiment pour le temps que tu m'accorde.
Merci beaucoup vraiment pour le temps que tu m'accorde.
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
23
16 mai 2008 à 12:35
16 mai 2008 à 12:35
Bon voila j'ai trouvé la solution donc je l'indique ça peut toujours servir a d'autres personnes :
Quand on souhaite remplacer des champs dans un fichier TEMPLATE :
sed -e "
s/\bDATE\b/${DATE}/
s/\bNBPUSH\b/${NBPUSH}/
s/\bPOLD\b/${POLD}/
s/\bNEWSLETTER\b/${NEWSLETTER}/
s/\bNOLD\b/${NOLD}/
s/\bCDC\b/${CDC}/
s/\bCCOLD\b/${CCOLD}/
" stats_century21.tpl | mail -s " ...
Le nom des variables ne doivent pas etre trop similaire, Il faut mettre des doubles cotes et apparement un marqueur s/\b et \b/ .
Pour plus de detail je vous ai mis la réponse a mon post sur le Group des users de SED : https://groups.yahoo.com/neo/groups/sed-users/info
Merci a tous ceux qui m'ont aidé et surtout a toi jipicy.
Further, as a favor to you I will point out that the order of the
lines in a sed script is very important. In particular
NBPUSH
NBPUSHOLD
and similar constructions will cause problems, because "NBPUSHOLD"
contains "NBPUSH" as a substring. When the sed reads a line into the
pattern space which contains "NBPUSHOLD", the sed script will match
"NBPUSH" on that pattern because it truly does match.
If you intend to search for whole words, you must reverse the order
of the patterns to find, so that the longer string comes first:
s/NBPUSHOLD/$etc/
s/NBPUSH/$etc/
s/VENTEOLD/$etc/
s/VENTE/$etc
Or an alternative is to use GNU sed (comes by default with every
GNU/Linux installation) and use the word-boundary marker, \b. E.g.,
s/\bNBPUSH\b/$one/
s/\bNBPUSHOLD\b/$two/
s/\bVENTE\b/$three/
s/\bVENTEOLD\b/$four/
Quand on souhaite remplacer des champs dans un fichier TEMPLATE :
sed -e "
s/\bDATE\b/${DATE}/
s/\bNBPUSH\b/${NBPUSH}/
s/\bPOLD\b/${POLD}/
s/\bNEWSLETTER\b/${NEWSLETTER}/
s/\bNOLD\b/${NOLD}/
s/\bCDC\b/${CDC}/
s/\bCCOLD\b/${CCOLD}/
" stats_century21.tpl | mail -s " ...
Le nom des variables ne doivent pas etre trop similaire, Il faut mettre des doubles cotes et apparement un marqueur s/\b et \b/ .
Pour plus de detail je vous ai mis la réponse a mon post sur le Group des users de SED : https://groups.yahoo.com/neo/groups/sed-users/info
Merci a tous ceux qui m'ont aidé et surtout a toi jipicy.
Further, as a favor to you I will point out that the order of the
lines in a sed script is very important. In particular
NBPUSH
NBPUSHOLD
and similar constructions will cause problems, because "NBPUSHOLD"
contains "NBPUSH" as a substring. When the sed reads a line into the
pattern space which contains "NBPUSHOLD", the sed script will match
"NBPUSH" on that pattern because it truly does match.
If you intend to search for whole words, you must reverse the order
of the patterns to find, so that the longer string comes first:
s/NBPUSHOLD/$etc/
s/NBPUSH/$etc/
s/VENTEOLD/$etc/
s/VENTE/$etc
Or an alternative is to use GNU sed (comes by default with every
GNU/Linux installation) and use the word-boundary marker, \b. E.g.,
s/\bNBPUSH\b/$one/
s/\bNBPUSHOLD\b/$two/
s/\bVENTE\b/$three/
s/\bVENTEOLD\b/$four/
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
>
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
16 mai 2008 à 13:22
16 mai 2008 à 13:22
Merci et honte à moi de ne pas y avoir pensé à cette histoire de "frontière de mot" ;-[