Formatage de date et heure avec AWK

Résolu
GHISLINO Messages postés 214 Date d'inscription   Statut Membre Dernière intervention   -  
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

j'ai le FILE1 séparateur point virgule ci dessous avec le format de date 20140107213507.0Z que je veux transformer en 2014/01/07 21:35:07.0Z



20140107213507.0Z;BSCYAKRO4 Abis TP 63[_63];174810,BSC-TRANS [101] AIS [1];20140107213507.1Z
20140107213506.3Z;BSCYAKRO4 Abis TP 63[_63];174808,BSC-TRANS [101] AIS [1];20140107213506.5Z
20140107213457.9Z;BSCYAKRO4 Abis TP 63[_63];174806,BSC-TRANS [101] AIS [1];20140107213457.9Z
20140107213452.6Z;BSCYAKRO4 Abis TP 63[_63];174804,BSC-TRANS [101] AIS [1];20140107213452.8Z
20140107213448.6Z;BSCYAKRO4 Abis TP 63[_63];174802,BSC-TRANS [101] AIS [1];20140107213448.7Z
20140107213448.1Z;BSCYAKRO4 Abis TP 63[_63];174801,BSC-TRANS [101] BER-10E-6 [7];20140107213448.6Z
20140107213448.7Z;BSCYAKRO4 Abis TP 63[_63];174803,BSC-TRANS [101] BER-10E-6 [7];20140107213929.3Z
20140107213447.8Z;BSCYAKRO4 Abis TP 63[_63];174800,BSC-TRANS [101] AIS [1];20140107213448.1Z
20140107213442.0Z;BSCYAKRO4 Abis TP 63[_63];174799,BSC-TRANS [101] BER-10E-6 [7];20140107213447.8Z
20140107213441.7Z;BSCYAKRO4 Abis TP 63[_63];174798,BSC-TRANS [101] AIS [1];20140107213442.0Z
20140107213435.0Z;BSCYAKRO4 Abis TP 63[_63];174797,BSC-TRANS [101] BER-10E-6 [7];20140107213441.7Z


en sortit j'aurai le FIle ci-dessous avec le 1er champ de FILE1 en position deux (en gras )

BSCYAKRO4 Abis TP 63[_63];174810,BSC-TRANS [101] AIS [1];2014/01/07 21:35:07.0Z;2014/01/07 21:35:07.1Z
BSCYAKRO4 Abis TP 63[_63];174808,BSC-TRANS [101] AIS [1];2014/01/07 21:35:06.3Z;2014/01/07 21:35:06.5Z
BSCYAKRO4 Abis TP 63[_63];174806,BSC-TRANS [101] AIS [1];2014/01/07 21:34:57.9Z;2014/01/07 21:34:57.9Z
BSCYAKRO4 Abis TP 63[_63];174804,BSC-TRANS [101] AIS [1];2014/01/07 21:34:52.6Z;2014/01/07 21:34:52.8Z
BSCYAKRO4 Abis TP 63[_63];174802,BSC-TRANS [101] AIS [1];2014/01/07 21:34:48.6Z;2014/01/07 21:34:48.7Z
BSCYAKRO4 Abis TP 63[_63];174801,BSC-TRANS [101] BER-10E-6 [7];2014/01/07 21:34:48.1Z;2014/01/07 21:34:48.6Z
BSCYAKRO4 Abis TP 63[_63];174803,BSC-TRANS [101] BER-10E-6 [7];2014/01/07 21:34:48.7Z;2014/01/07 21:39:29.3Z
BSCYAKRO4 Abis TP 63[_63];174800,BSC-TRANS [101] AIS [1];2014/01/07 21:34:47.8Z;2014/01/07 21:34:48.1Z
BSCYAKRO4 Abis TP 63[_63];174799,BSC-TRANS [101] BER-10E-6 [7];2014/01/07 21:34:42.0Z;2014/01/07 21:34:47.8Z
BSCYAKRO4 Abis TP 63[_63];174798,BSC-TRANS [101] AIS [1];2014/01/07 21:34:41.7Z;2014/01/07 21:34:42.0Z
BSCYAKRO4 Abis TP 63[_63];174797,BSC-TRANS [101] BER-10E-6 [7];2014/01/07 21:34:35.0Z;2014/01/07 21:34:41.7Z


merci pour votre aide

cdlt


3 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
$ awk 'BEGIN {FS=OFS=";"; S="/"; D=":"} {print $2, substr($1, 1, 4) S substr($1, 5, 2) S substr($1, 7, 2) " " substr($1, 9, 2) D substr($1, 11, 2) D substr($1, 13, 5), substr($4, 1, 4) S substr($4, 5, 2) S substr($4, 7, 2) " " substr($4, 9, 2) D substr($4, 11, 2) D substr($4, 13, 5)}' fichier
BSCYAKRO4 Abis TP 63[_63];2014/01/07 21:35:07.0Z;2014/01/07 21:35:07.1Z
BSCYAKRO4 Abis TP 63[_63];2014/01/07 21:35:06.3Z;2014/01/07 21:35:06.5Z
BSCYAKRO4 Abis TP 63[_63];2014/01/07 21:34:57.9Z;2014/01/07 21:34:57.9Z
BSCYAKRO4 Abis TP 63[_63];2014/01/07 21:34:52.6Z;2014/01/07 21:34:52.8Z
BSCYAKRO4 Abis TP 63[_63];2014/01/07 21:34:48.6Z;2014/01/07 21:34:48.7Z
BSCYAKRO4 Abis TP 63[_63];2014/01/07 21:34:48.1Z;2014/01/07 21:34:48.6Z
BSCYAKRO4 Abis TP 63[_63];2014/01/07 21:34:48.7Z;2014/01/07 21:39:29.3Z
BSCYAKRO4 Abis TP 63[_63];2014/01/07 21:34:47.8Z;2014/01/07 21:34:48.1Z
BSCYAKRO4 Abis TP 63[_63];2014/01/07 21:34:42.0Z;2014/01/07 21:34:47.8Z
BSCYAKRO4 Abis TP 63[_63];2014/01/07 21:34:41.7Z;2014/01/07 21:34:42.0Z
BSCYAKRO4 Abis TP 63[_63];2014/01/07 21:34:35.0Z;2014/01/07 21:34:41.7Z
$
1
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Salut,

Extrait :

The strftime() function allows you to easily turn a timestamp into human-readable information. It is similar in nature to the sprintf() function (see String Functions), in that it copies nonformat specification characters verbatim to the returned string, while substituting date and time values for format specifications in the format string. 

0
Utilisateur anonyme
 
salut,

malheureusement,
strftime
n'est d'aucune utilité dans ce cas :(
20140107213507.0Z
n'est pas un timestamp, c'est la date concaténée, sans séparateurs.
il me semble qu'il n'est possible que de découper le champs à coups de
substr()
successifs, et de réassemblé au format souhaité.
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Salut QQCQCPQ,

Oups, effectivement, je n'avais même pas fait gaffe ;-[

Merchi.
0
GHISLINO Messages postés 214 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour a tous

Merci pour votre aide.

@Dubcek : j ai juste ajouté
";"$3
pour insérer le champ 3 du fichier original et ca marche très bien, j obtiens le resulat ci-dessous:



BSCYAKRO4 Abis TP 63[_63];174810,BSC-TRANS [101] AIS [1];2014/01/07 21:35:07.0Z;2014/01/07 21:35:07.1Z
BSCYAKRO4 Abis TP 63[_63];174808,BSC-TRANS [101] AIS [1];2014/01/07 21:35:06.3Z;2014/01/07 21:35:06.5Z
BSCYAKRO4 Abis TP 63[_63];174806,BSC-TRANS [101] AIS [1];2014/01/07 21:34:57.9Z;2014/01/07 21:34:57.9Z
BSCYAKRO4 Abis TP 63[_63];174804,BSC-TRANS [101] AIS [1];2014/01/07 21:34:52.6Z;2014/01/07 21:34:52.8Z
BSCYAKRO4 Abis TP 63[_63];174802,BSC-TRANS [101] AIS [1];2014/01/07 21:34:48.6Z;2014/01/07 21:34:48.7Z

merci à tous infiniment


cdlt.
0