Transformation de date sous linux
Salutatous....
mon probleme est le suivant... g des logs a nalyser, et les dates me sortent sous le format GNU, cad en decompte de secondes depuis le 01/01/1970 à 00h00
est ce que quelqu'un aurait un soft ou une ligne de commande permettant de transformer par exemple 1033570316 en 02/10/2002 16:51:56 ?????
merchi d'avance ;)
.O
(_)__... Castor
mon probleme est le suivant... g des logs a nalyser, et les dates me sortent sous le format GNU, cad en decompte de secondes depuis le 01/01/1970 à 00h00
est ce que quelqu'un aurait un soft ou une ligne de commande permettant de transformer par exemple 1033570316 en 02/10/2002 16:51:56 ?????
merchi d'avance ;)
.O
(_)__... Castor
11 réponses
-
Ptain t es dans la merde....
Bon regarde quand meme si le gars qui fait les logs ne peut pas changer ce format.
sinon avec la comande date +%s et la crontab tu peux peut etre faire un script qui ne soit pas trop penalisant ?
m enfin bon..
good luck -
Regarde en perl
-
Modérateurbah les logs c des logs "natifs" de squid
et meme si maintenant on les modifie pour ca, il reste qd meme mes 300 000 lignes de logs deja existantes a modifier :D
vi c pas bete le perl... tu penses qu'ily a une commande qui transforme tout ca?? ou fo se taper ca a la barbare :D
en tout cas merci sysdamin :p
.O
(_)__... Castor -
Contributeurun petit cout de system call gettimeofday et c'est fait.
En perl tu utilises les services time et localtime
En vrac, je te file du code que j'ai pondu pour ajouter ou soustraire un nombre J de jours à la date courante, sous windows 98 avec des petits offsets pour corriger les différences avec unix. Si toi tu cueille un chiffre, tu pars de là au lieu de time qui donne le chiffre du temps présent...
if ($J =~ /^[-]*[0-9]+$/) {
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
localtime(time + 3600*24*$J);
$mon++;
$When=&Str_date();
};
sub Str_date {
#----------------
local($Year);
if ($year<100) { $Year=($year>=70)?1900+$year:2000+$year;}
elsif ($year<1900) {$Year=$year+1900;} # Emm v 2.6
else {$Year=$year;};
$_=sprintf ("%s%d/%s%d/%4s",
($mday<10)?"0":"",$mday, ($mon<10)?"0":"",$mon,$Year);
if ($Year<1996 || $Year >2070 || $mon>12 || $mday >31) {
die ("Le $_ ! Petit farceur, va !\n");
};
$_;
}
:,§_ ç _
(@)=(@) -
ContributeurSorry pour les fautes, lis coup et cueilles, c'est parti trop vite, pardon!
-
ModérateurEn Python... tu cr?es la proc?dure idoine....
#! /usr/bin/python
import time
t = 1033570316
try:
d = time.gmtime(t)
print "%02d/%02d/%d %02d:%02d:%02d" % (d[2], d[1], d[0], d[3], d[4], d[5])
except(e):
pass
The software said "Requires Windows98, Win2000, or better
So I installed Unix. -
ModérateurIl faut ?videmment placer les tabulations correctes...
En Python... tu cr?es la proc?dure idoine....
#! /usr/bin/python
import time
t = 1033570316
try:
___d = time.gmtime(t)
___print "%02d/%02d/%d %02d:%02d:%02d" % (d[2], d[1], d[0], d[3], d[4], d[5])
except(e):
___pass
The software said "Requires Windows98, Win2000, or better
So I installed Unix. -
Modérateurok merci les gars.. je tenterai ca demain....
(sous perl pk g dja tout le script en perl) mais merci aussi jisiv, g archive ca :p
oui M&M's en effet je "pars" du chiffre..
.O
(_)__... Castor -
ContributeurHa Castor, tu vois que j'ai codé cela à la mise-t-en-flute avec des variables year, mon, mday globales alors que j'aurais du créer un joli array à passr par référence à la fonction, tu peux fignoler... En tout cas, mon truc tourne en opération tous les jours.
:,§_ ç _
(@)=(@) -
Modérateurmouarf tinkiete...mon script ferait fuir un codeur de chez microsoft, c pour te dire :-DDD
.O
(_)__... Castor -
Modérateuroki M&M's g recup ton script et adapte rapidement... encore merci pour ton aide...
au passage, je redirige ce post vers programmation (commme un ane je me suis plante de forum :p)
.O
(_)__... Castor