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 :

changer le format de la date de la 4 eme occurence


Sujet :

Shell et commandes GNU

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 716
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 716
    Par défaut changer le format de la date de la 4 eme occurence
    Bonjour,

    Je cherche avec sed comment remplacer
    AA;BB;CC;31-MAR-10;EE;FF
    en
    AA;BB;CC;20100331;EE;FF

    J'ai essaye avec SED plusieurs choses sans succes

    Merci d'avance
    Philippe

  2. #2
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    avec awk :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    BEGIN{
    FS=";"
    OFS=";"
    }
    {
            gsub("MAR","03",$4);
            $4=gensub(/([0-9][0-9])-([0-9][0-9])-([0-9][0-9])/,"20\\3\\2\\1","",$4);
            print $0 ;
    }

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 716
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 716
    Par défaut
    Merci
    Awk est considére comme "lourd" je vais encore cherché pour SED

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    Bonjour,

    pourquoi sed ?
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ IFS=';' read un deux trois soleil etc <<< "AA;BB;CC;31-MAR-10;EE;FF"
    $ echo "$un;$deux;$trois;$(date -d $soleil +%Y%m%d);$etc"
    AA;BB;CC;20100331;EE;FF
    $
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    Citation Envoyé par pcouas Voir le message
    Merci
    Awk est considére comme "lourd" je vais encore cherché pour SED
    +- 2 minutes pour 20 millions de lignes sur un core 2 avec 2 giga, c'est pas vraiment ce que j'appellerais lourd

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 716
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 716
    Par défaut
    Ok
    Il ne me reste plus qu'a faire une boucle pour tous les mois de l'annee, et a inverser le 310310 en 100331 en plus

    Merci

  7. #7
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    Pas besoin de faire une boucle, tu fais une liste de gsub et c'est parti

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 716
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 716
    Par défaut
    le gensub ne fonctionne pas !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -F":" 'BEGIN{FS=";"OFS=";"}{ gsub("JAN","01",$10);  gsub("MAR","03",$4);$4=gensub(/([0-9][0-9])-([0-9][0-9])-([0-9][0-9])/,"20\\3\\2\\1","",$4);    print $0 ;}' /tmp/sed/databad.txt
    Merci

  9. #9
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    Dans un script !

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 716
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 716
    Par défaut
    Oui dans un script, en ligne de commande c'est ok
    Mais j'ai deux colonnes a remplacer,et mes données ont ete deplace, je vais donc faire 2 awk
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    FR;CO;SDQ;CT;FR;D;AF;RT;DFIRME;CFART;01-JAN-10;31-DEC-10;25;24
    FR;CO;SDQ;CT;FR;D;AF;RT;DFIRME;CFART;01-MAR-10;31-DEC-10;25;24
    Merci

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 716
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 716
    Par défaut
    Youpi cela fonctionne
    MERCI beaucoup

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 03/07/2007, 11h03
  2. changer le format d'une date
    Par ecirb dans le forum VBScript
    Réponses: 1
    Dernier message: 04/04/2007, 08h25
  3. [XSLT] changer le format d'une date
    Par ami_in55 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 26/03/2007, 09h33
  4. [Dates] changer le format d'une date.
    Par maraly dans le forum Langage
    Réponses: 3
    Dernier message: 24/01/2007, 16h17
  5. commant changer le format d'une date?
    Par tribaleur dans le forum ASP
    Réponses: 5
    Dernier message: 02/06/2006, 07h55

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