|
|
|
|
Bonjour,
voila j'ai mon script shell qui ressemble a cela:
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`
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 -e "
s/\bCONFI\b/${CONFI}/
s/\bCONOLD\b/${CONOLD}/
s/\bSIMPL\b/${SIMPL}/
s/\bSIMOLD\b/${SIMOLD}/ " toto.tpl | mail -s "Envoi du ${DATE}" toto@toto.fr
Configuration: Linux Debian Mozilla 1.8.1.13
Bonjour,
~$ echo "nombre de votes simples : 12546 ( contre 11652 en Avril 2008 )" |sed -r -n 's/(nombre de votes [a-z]+ : ([0-9]+) \( contre ([0-9]+) en [A-Z][a-z]+ [0-9]{4} )(\))/\1|\2|\3|\4/p' |awk 'BEGIN{ FS = "|" }{ printf "%s soit %+.2f%% %s\n",$1,($2-$3)/$3*100,$4 }'
Exemple: ~$ cat plop Bonjour,
Voici les stats au DATE
Nombre de votes simple et double au 16-05-2008 :
nombre de votes simples : 12546 ( contre 11652 en Avril 2008 )
nombre de votes double : 6523 ( contre 5698 en Avril 2008 )
~$ sed -r 's/(nombre de votes [a-z]+ : ([0-9]+) \( contre ([0-9]+) en [A-Z][a-z]+ [0-9]{4} )(\))/\1|\2|\3|\4/' plop |awk 'BEGIN{ FS = "|" }/nombre de vote/{ printf "%s soit %+.2f%% %s\n",$1,($2-$3)/$3*100,$4 }!/nombre de vote/{ print $0 }'
Bonjour,
Voici les stats au DATE
Nombre de votes simple et double au 16-05-2008 :
nombre de votes simples : 12546 ( contre 11652 en Avril 2008 soit +7,67% )
nombre de votes double : 6523 ( contre 5698 en Avril 2008 soit +14,48% )
Une belette, un lapin !? C'est pas normal! |
Salut,
POURCENTAGE1=$(echo "scale=2;($CONFI - $CONFIOLD) * 100 / $CONFIOLD" | bc -l) POURCENTAGE2=$(echo "scale=2;($SIMPL - $SIMOLD) * 100 / $SIMOLD" | bc -l) puis dans la partie "sed" : s/\bPOURCENTAGE1\b/${POURCENTAGE1}/
s/\bPOURCENTAGE2\b/${POURCENTAGE2}/
et dans ton TEMPLATE : nombre de votants simples : VENTE (contre VENTEOLD en DATEOLD soit POURCENTAGE1%) nombre de votants doubles : LOC (contre LOCOLD en DATEOLD soit POURCENTAGE2%) et ça devrait le faire ;-)) JP - Éleveur de pingouins - Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot. |
Merci beaucoup jipicy,
|
En fait on envoie un suite d'opération à effectuer à une calculatrice en ligne "bc".
|
J'ai un souci je ne voit pas le script de asevere en totalite sur le forum il est couper sur la droite. Peux tu me le remttre si toi tu le voit en entier avec la partie de AWK. De plus est ce que cela qui suit te semple correct?
fi
sed -e "
s/\bCONFI\b/${CONFI}/
s/\bCONOLD\b/${CONOLD}/
s/\bSIMPL\b/${SIMPL}/
s/\bSIMOLD\b/${SIMOLD}/ " toto.tpl |
sed -r 's/(nombre de votes [a-z]+ : ([0-9]+) \( contre ([0-9]+) en [A-Z][a-z]+ [0-9]{4} )(\
| mail -s "Envoi du ${DATE}" toto@toto.fr
--L'accés au savoir est la premiére liberté de l'homme. |
Voilà le script d'Adrien adapté à tes besoins en partant de cet exemple en sortie...
Bonjour, Voici les stats au 16-05-2008 : Nombre de votes simple et double au 16-05-2008 : nombre de votes simples : 12546 ( contre 11652 en Avril 2008 ) nombre de votes double : 6523 ( contre 5698 en Avril 2008 ) Nombre de votants simple et double au 16-05-2008 : nombre de votants simples : 23546 ( contre 54652 en Avril 2008 ) nombre de votants double : 641 ( contre 598 en Avril 2008 ) Nombre de com simple et double au 16-05-2008 : nombre de com simples : 1246 ( contre 11652 en Avril 2008 ) nombre de com double : 6523 ( contre 5698 en Avril 2008 )Et le script : sed -r '
s/(nombre .*[a-z]+ : ([0-9]+) \( contre ([0-9]+) en [A-Z][a-z]+ [0-9]{4} )(\))/\1|\2|\3|\4/
' plop | awk '
BEGIN{
FS = "|"
}
/nombre /{
printf "%s soit %+.2f%% %s\n",$1,($2-$3)/$3*100,$4
}
!/nombre /{
print $0
}' Voilà donc le code qu'il te faudrait intercaler comme tu l'as fait ci-dessus, mais sans le fichier "plop" ça va de soi ;-))
Par contre il est vrai que dans ma façon de faire je n'ai pas le signe "+" qui s'affiche, par contre chez moi le signe "-" lui s'affiche ;-\ JP - Éleveur de pingouins - Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot.
|
Affiches-nous la sortie de : sed -e "
s/\bSIMPL\b/${SIMPL}/
s/\bSIMOLD\b/${SIMOLD}/
s/\bDATOLD\b/${DATOLD}/
" votes.tpEntre balises < code > pour qu'on ait bien la mise en page...
Voilà quand même le résultat que j'obtiens chez moi : [tmpfs]$ cat plop
Bonjour,
Voici les stats au 16-05-2008 :
Nombre de votes simple et double au 16-05-2008 :
nombre de votes simples : 12546 ( contre 11652 en Avril 2008 )
nombre de votes double : 6523 ( contre 5698 en Avril 2008 )
Nombre de votants simple et double au 16-05-2008 :
nombre de votants simples : 23546 ( contre 54652 en Avril 2008 )
nombre de votants double : 641 ( contre 598 en Avril 2008 )
Nombre de com simple et double au 16-05-2008 :
nombre de com simples : 1246 ( contre 11652 en Avril 2008 )
nombre de com double : 6523 ( contre 5698 en Avril 2008 )
[tmpfs]$ sed -r '
s/(nombre .*[a-z]+ : ([0-9]+) \( contre ([0-9]+) en [A-Z][a-z]+ [0-9]{4} )(\))/\1|\2|\3|\4/
' plop | awk '
BEGIN{
FS = "|"
}
/nombre /{
printf "%s soit %+.2f%% %s\n",$1,($2-$3)/$3*100,$4
}
!/nombre /{
print $0
}'
Bonjour,
Voici les stats au 16-05-2008 :
Nombre de votes simple et double au 16-05-2008 :
nombre de votes simples : 12546 ( contre 11652 en Avril 2008 soit +7,67% )
nombre de votes double : 6523 ( contre 5698 en Avril 2008 soit +14,48% )
Nombre de votants simple et double au 16-05-2008 :
nombre de votants simples : 23546 ( contre 54652 en Avril 2008 soit -56,92% )
nombre de votants double : 641 ( contre 598 en Avril 2008 soit +7,19% )
Nombre de com simple et double au 16-05-2008 :
nombre de com simples : 1246 ( contre 11652 en Avril 2008 soit -89,31% )
nombre de com double : 6523 ( contre 5698 en Avril 2008 soit +14,48% )
[tmpfs]$;-))
JP - Éleveur de pingouins - Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot.
|
Tiens j'ai un peu remanié la syntaxe de "sed" et de "awk", et voilà ce que ça donne : [tmpfs]$ cat pcsystemd
Bonjour,
Voici les votes au 18-05-2008
Votes :
il y a 19714 votes du site ( contre 19714 au 1er April 2008 )
New :
il y a 37498 inscriptions à la news du site ( contre 37495 au 1er April 2008 )
CD :
il y a 158 cd ( contre 158 au 1er April 2008 )
Nombre de votes simple et double au 16-05-2008 :
nombre de votes simples : 12546 ( contre 11652 en Avril 2008 )
nombre de votes double : 6523 ( contre 5698 en Avril 2008 )
Nombre de votants simple et double au 16-05-2008 :
nombre de votants simples : 23546 ( contre 54652 en Avril 2008 )
nombre de votants double : 641 ( contre 598 en Avril 2008 )
Bonne journée.
[tmpfs]$ sed -r '
/\(.*\)/ s/([^0-9]*)([0-9]+)([^0-9]*)([0-9]+)(.*)\)/\1\2\3\4\5|\2|\4|)/
' pcsystemd | awk '
BEGIN{
FS = "|"
}
/il / || /nombre /{
printf "%s soit %+.2f%% %s\n",$1,($2-$3)/$3*100,$4
}
!/il / && !/nombre /{
print $0
}'
Bonjour,
Voici les votes au 18-05-2008
Votes :
il y a 19714 votes du site ( contre 19714 au 1er April 2008 soit +0,00% )
New :
il y a 37498 inscriptions à la news du site ( contre 37495 au 1er April 2008 soit +0,01% )
CD :
il y a 158 cd ( contre 158 au 1er April 2008 soit +0,00% )
Nombre de votes simple et double au 16-05-2008 :
nombre de votes simples : 12546 ( contre 11652 en Avril 2008 soit +7,67% )
nombre de votes double : 6523 ( contre 5698 en Avril 2008 soit +14,48% )
Nombre de votants simple et double au 16-05-2008 :
nombre de votants simples : 23546 ( contre 54652 en Avril 2008 soit -56,92% )
nombre de votants double : 641 ( contre 598 en Avril 2008 soit +7,19% )
Bonne journée.
[tmpfs]$;-))
JP - Éleveur de pingouins - Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot. |
Explications syntaxe sed :
|
Tiens avec cette petite correction ça devrait aller mieux : sed -r '
/\(.*\)/ s/([^0-9]*)([0-9]+)(.*\([^0-9]*)([0-9]+)(.*)\)/\1\2\3\4\5|\2|\4|)/
' pcsystemd | awk '
BEGIN{
FS = "|"
}
/il / || /nombre /{
printf "%s soit %+.2f%% %s\n",$1,($2-$3)/$3*100,$4
}
!/il / && !/nombre /{
print $0
}';-))
JP - Éleveur de pingouins - Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot. |