IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

[awk] Extraire des champs avec plusieurs séparateurs différents


Sujet :

Shell et commandes GNU

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 158
    Points : 80
    Points
    80
    Par défaut [awk] Extraire des champs avec plusieurs séparateurs différents
    Salut,

    Je souhaite parser une date de la facon suivante

    en entrée ma date est de la forme :
    01/12/2013 08:00

    après mon awk je voudrais :

    00080112013

    J'arrive à gérer le cas avec juste des / dans mon .sh via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    date_entree="01/11/2013"
    date_sortie=$(echo $date_entree | awk -F "/" '{print $3 $2 $1}')
    Savez vous comment je peux parser ma date d'entrée avec les séparateurs ":" et espace en plus ?
    (avec date_entree = "01/12/2013 08:00")

  2. #2
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 038
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 038
    Points : 8 405
    Points
    8 405
    Par défaut
    l’intérêt du switch -F de awk c'est qu'on peut aussi bien y passer une expression régulière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    date_entree="01/12/2013 08:00"
    echo $date_entree | awk -F '[/ :]' '{print $5 $4 $3 $2 $1}'
    000820131201
    and voila

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 594
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 594
    Points : 19 472
    Points
    19 472
    Par défaut
    Bonjour,

    comment la date est-elle affectée à cette variable ? (d'où sort cette date ?)

    Citation Envoyé par extrait du manuel
    -F fs
    --field-separator fs
    Use fs for the input field separator (the value of the FS predefined variable).

    [...] FS is expected to be a full regular expression.
    mais, ce format est lisible par date, qui, avec son option -d et une indication adéquate du format souhaité, fera ce que tu souhaites.

  4. #4
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 310
    Points : 12 818
    Points
    12 818
    Par défaut
    Comme dit par N_BaH :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ date_entree="01/12/2013 08:00"
    $ date --date="$date_entree" +%M%H%m%d%Y
    000801122013

  5. #5
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 271
    Points : 13 536
    Points
    13 536
    Par défaut
    Bonjour

    Attention tout de même à l'ordre anglophone.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ date_entree="01/12/2013 08:00" ; date --date="$date_entree" +%M%H%m%d%Y
    000801122013
    $ date_entree="01/23/2013 08:00" ; date --date="$date_entree" +%M%H%m%d%Y
    000801232013
    $ date_entree="23/12/2013 08:00" ; date --date="$date_entree" +%M%H%m%d%Y
    date: date non valide «*23/12/2013 08:00*»

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 158
    Points : 80
    Points
    80
    Par défaut
    Ca marche !

    thanks !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Parcourir et comparer des champs avec awk ?
    Par Gothan44 dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 21/10/2013, 16h12
  2. Réponses: 3
    Dernier message: 13/07/2012, 10h58
  3. [CR 2008] Requete avec des champs renvoyant plusieurs resultats
    Par caribou_espion dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 13/06/2008, 08h29
  4. [(n)awk] Parsing avec plusieurs séparateurs de champs
    Par gangsoleil dans le forum Linux
    Réponses: 6
    Dernier message: 27/03/2007, 16h02
  5. [Access] extraire des champs de plusieurs tables
    Par ddeee dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/04/2006, 16h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo