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 34620 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

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    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
  2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    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
    1. 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
    2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Salut QQCQCPQ,

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

      Merchi.
      0
  3. 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