Lecture d'un fichier et conversion date Perl [Résolu/Fermé]

Signaler
Messages postés
52
Date d'inscription
lundi 11 août 2008
Statut
Membre
Dernière intervention
13 juin 2012
-
Messages postés
18242
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
13 juin 2021
-
Bonjour,

Je suis un débutant en Perl , J'aimerai lire un fichier de format Nombre Date Nombre et convertir la date en seconde

Exemple d'entete :

23446663 2010-08-20 23:34:23 9899292

Merci de votre aide

8 réponses

Messages postés
18242
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
13 juin 2021
5 303
hello
$ export TZ=$(date +%Z)
$ 
$ cat  p2
#!/usr/bin/perl

use Time::Piece ;
open(my $in,  "<", $ARGV[0]);
while (<$in>) {
   chomp;
   ($c1,$c2,$c3,$c4)=split(/\s+/);
   my $t = Time::Piece->strptime($c2 . " " . $c3,"%Y-%m-%d %T");
   print $t->strftime("%s\n");
}

$ cat a2
23446663 2010-08-20 23:34:23 9899292
$ 
$ ./p2 a2
1282347263
$ 
$ # vérifions
$ d="2010-08-20 23:34:23" ; date -d "$d"  +%s
1282347263
$
Messages postés
52
Date d'inscription
lundi 11 août 2008
Statut
Membre
Dernière intervention
13 juin 2012
3
Bonjour

Merci pour ta réponse mais je voudrais afficher la meme forme du fichier en remplaçant 2010-08-20 23:34:23 par 1282347263


Cad

23446663 1282347263 9899292
535366367 1282347267 0029329

Et Merci bcp
Messages postés
18242
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
13 juin 2021
5 303
alors on imprime $c1, le temps et $c4, remplacer
print $t->strftime("%s\n");
par
printf "%s %s %s\n", $c1, $t->strftime("%s"), $c4;
Messages postés
52
Date d'inscription
lundi 11 août 2008
Statut
Membre
Dernière intervention
13 juin 2012
3
Bonjour

Je l'execute sous windows , il me donne just les 2 champ 1 er et 3 eme

perl test.pl a2,

23446663 9899292
Messages postés
18242
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
13 juin 2021
5 303
je l'exécute sur Linux.
Il n'y a pas de message d'erreur ?
pour voir si il lit tous les champs imprimer
printf "%s %s %s %s\n", $c1, $c2, $c3, $c4 ;
Messages postés
52
Date d'inscription
lundi 11 août 2008
Statut
Membre
Dernière intervention
13 juin 2012
3
Il lit tous les champs mais pr le résultat il n'affiche pas le 2 eme champs
Messages postés
52
Date d'inscription
lundi 11 août 2008
Statut
Membre
Dernière intervention
13 juin 2012
3
Je pense que ce time:Piece n'existe pas sous Perl version windows nn !!
Messages postés
18242
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
13 juin 2021
5 303
que répond cette commande
 perl -e 'use POSIX qw(strftime); print strftime("%Y-%m-%d %H:%M:%S\n", localtime)'