Bonjour,

Suite à une petite prise de tête, faisons partager celle-ci

Voilà mon souci est que je check-list mes machines et ensuite j'archive mes données dans ../../secu/hostname/jour_mois_annee
Mais mes "jour" "mois" "années" sont de la forme 30_Sept_10

Et ensuite je transforme ces datas pour un serveur web qui m'affiche un beau tableau et ça tourne tout seul avec crontab

Mon Manager me demande si c'est possible d'avoir les données de la veille et de l'avant veille pour avoir un comparatif d'évolution lors d'une période de ré médiation

Mon souci était donc d'avoir la date d'hier et d'avant hier de la forme XX_MOIS(en 4 lettres)_xx

voici ma petite solution

soit

hier en perl

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
perl -e 'use POSIX qw/strftime/; printf strftime("%d_%m_%y", localtime(time-86400));'
86400 : correspond à 24H (vous pouvez doublez pour 48H ou plus pour 1 mois etc...

Ce qui me donne pour le 30-Septembre-2010 : 29_09_10

Je le mets dans une variable et je m'amuse avec awk !!!
pour avoir 29_Sept_10

Je sais certain vont me dire tu peux l'avoir aussi le mois avec %b mais 3 letres donc ... prise de tête

Et ce n'est qu'une démo pour faire jou jou avec un awk dans un awk

Voici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
HIER=$(perl -e 'use POSIX qw/strftime/; printf strftime("%d_%m_%y", localtime(time-86400));'

MANNEE="Janv;Fevr;Mars;Avri;Mai;Juin;Juil;Aout;Sept;Octo;Nove;Dece"

MHIER=$(echo $HIER | awk -F"_" '{print $2}')

puis

echo $HIER | awk -F"_" '{print $1"_'$(echo $MANNEE | awk -F";" '{print $'$MHIER'}')'_"$3}'
Voici, pour ceux que cela interresse

Cordialement
kalwin