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 POSIX Discussion :

Split d'un fichier en plusieurs en fonction d'un motif


Sujet :

Shell et commandes POSIX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 48
    Par défaut Split d'un fichier en plusieurs en fonction d'un motif
    Bonjour

    Je souhaite splitter un fichier en plusieurs en fonction d’un motif date

    En entrée j’ai un fichier de type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    888, ZZ0bbv009999,0001," Date/periode de traitement   ",20130602,        ,
    Xxxx
    Xxxx
    Xxxx
    Xxxx
    Xxxx
    xxxx
     
    888,ZZ0bbv009999,0001," Date/periode de traitement   ",20130603,        ,
    Xxxx
    Xxxx
    Xxxx
    Xxxx
    Xxxx
     
    888, ZZ0bbv009999,0001," Date/periode de traitement   ",20130604,        ,
    Xxxx
    Xxxx
    Xxxx
    Xxxx
    Etc
    Jusqu’à 6 fois
    En sotie je souhaiterai voir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    888, ZZ0bbv009999,0001," Date/periode de traitement   ",20130602,        ,
    Xxxx
    Xxxx
    Xxxx
    Xxxx
    Xxxx
    Xxxx   > dans fichier 20130602.txt
     
    888,ZZ0bbv009999,0001," Date/periode de traitement   ",20130603,        ,
    Xxxx
    Xxxx
    Xxxx
    Xxxx
    Xxxx > dans fichier 20130603.txt
     
    888, ZZ0bbv009999,0001," Date/periode de traitement   ",20130604,        ,
    Xxxx
    Xxxx
    Xxxx
    Xxxx
    Etc  > dans fichier 20130604.txt
     
    Jusqu’à 6 fois
    Merci d'avance de votre aide

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Par défaut
    Voici une piste possible avec awk:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -F, '/^888/{f=$5}{print > f".txt"}' fichier

  3. #3
    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
    Le même qui vérifie le format de la date

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     gawk -W re-interval  -F, '$5 ~/[0-9]{8}/ { FILE=$5 ;   } { print  >> FILE".txt" }' FICHIER

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 48
    Par défaut
    Citation Envoyé par becket Voir le message
    Le même qui vérifie le format de la date

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     gawk -W re-interval  -F, '$5 ~/[0-9]{8}/ { FILE=$5 ;   } { print  >> FILE".txt" }' FICHIER

    merci pour ta réponse. j'ai le message suivant: ksh: gawk: not found.
    ya t il un autre moyen de le faire sans le gawk .
    je suis en HP-UX.
    merci

  5. #5
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Bonsoir.

    Citation Envoyé par moctarim Voir le message
    ya t il un autre moyen de le faire sans le gawk .
    je suis en HP-UX.
    merci
    Dans ce cas, j'ai déplacé dans le bon forum (lire ceci pour en savoir plus)

    gawk est l'implémentation GNU de awk utilisé par défaut sous Linux. Tu peux tenter de remplacer "gawk" par la commande "awk" pour voir si la syntaxe et les options sont acceptées par ta version de awk et adapter au besoin (j'ai pas de HP-UX pour tester personnellement).

    Cordialement,
    Idriss

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 48
    Par défaut
    Merci la commande avec awk -f fonctionne correctement. Je passe en résolu.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 48
    Par défaut
    Citation Envoyé par ripat Voir le message
    Voici une piste possible avec awk:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -F, '/^888/{f=$5}{print > f".txt"}' fichier
    Merci pour ce retour. C'est à peu près bon sauf qu'il ya un format date à respecter sinon j'ai des fichiers de type
    357000.txt ou 1143000.txt
    Le format date doit être respecté . Exemple 20130602 ou 20130603 ou 20130604 ou 20130605
    Merci

  8. #8
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 362
    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 362
    Par défaut
    Bonjour,

    Elles ressemblent à quoi les lignes Xxxxxx ?
    Car je pense que le problème de critères est lié à ces lignes et non au format date.

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

Discussions similaires

  1. split un fichier en plusieurs
    Par horalass dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 25/06/2009, 22h47
  2. Imprimer automatiquement fichiers de plusieurs formats
    Par lutin511 dans le forum Windows
    Réponses: 5
    Dernier message: 07/12/2005, 18h38
  3. Split d'un fichier entre 2 patterns
    Par mirascheat dans le forum Langage
    Réponses: 7
    Dernier message: 17/10/2005, 17h58
  4. [XSLT] - Trier un fichier sur plusieurs critères
    Par ytse dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 11/10/2005, 16h26
  5. utiliser le même fichier dans plusieurs projets vc++6
    Par yannick_sch dans le forum MFC
    Réponses: 5
    Dernier message: 12/02/2004, 17h39

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