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

Administration système Discussion :

Découper un fichier en fonction des donnees vers un autre fichier.


Sujet :

Administration système

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Découper un fichier en fonction des donnees vers un autre fichier.
    Bjr ,


    j'aurais besoin d'un coup de main pour générer plusieurs fichiers en fonction de la première colonne du fichier entrée.

    Ci-dessous modèle du fichier entrée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    090609_150555_M00316000_1;0000000005273164;Madame PATRICIA               ;                                      ;                                      ;1 RUE JACQUES                ;                                      ;12330 GILLEAUX               ;                                                                ;          ;
    090609_150555_M00316000_1;0000000005273180;Monsieur LAURENT                 ;                                      ;                                      ;51 AVENUE PASCAL                      ;                                      ;21000 DIJON                           ;                                                                ;0620740xxx;
    090609_150555_M00316000_1;0000000005273198;Monsieur JEAN PASCAL             ;                                      ;                                      ;67 BOULEVARD MARTIN                   ;                                      ;21000 DIJON                           ;                                                                ;0628221xxx;
    090609_160555_M00316000_2;0000000005273313;Monsieur BERNARD                  ;                                      ;                                      ;15 CHEMIN DU PARC            ;                                      ;98510 PERON              ;FAMILGE@FREE.FR                                            ;          ;
    090609_160555_M00316000_2;0000000005273354;Mademoiselle SOPHIE              ;LES GOBA                           ;                                      ;                                      ;                                      ;84430 MENNO                   ;SOPRIN@YAHOO.FR                                            ;0673463xxx;
    090609_160555_M00316000_2;0000000005273404;Monsieur PHILIPPE              ;                                      ;                                      ;54 IMPASSE DU CREU                     ;                                      ;23510 LORT;PHILIPPE.GAR@FREE.FR                                       ;0632188xxx;
    100609_160551_M00316000_3;0000000005273180;Monsieur LAURENT                 ;                                      ;                                      ;87 AVENUE DU PRE                      ;                                      ;21000 DIJON                           ;                                                                ;0620740xxx;
    100609_160551_M00316000_3;0000000005273354;Mademoiselle SOPHIE              ;LES GOBAS                           ;                                      ;                                      ;                                      ;13510 MENE SALOW                   ;SOPHIEGO@YAHOO.FR                                            ;067346xxxx;
    100609_160551_M00316000_3;0000000005273859;Monsieur HERVE                  ;                                      ;                                      ;12 R LT DE R                ;                                      ;22600 LONGV                         ;HERVE.KAAN@WAADOO.FR                                         ;0682796xxx;

    A chaque fois que la première colonne change on créé un nouveau fichier avec toutes les memes colonnes réunies.

    Merci pour votre aide.

    Cordialement.

  2. #2
    Membre averti Avatar de Vespasien
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    383
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 383
    Points : 434
    Points
    434
    Par défaut
    Avec du Perl, çà peut le faire facilement. Après, il faut voir les langages que tu connais. Si tu n'en connais aucun, alors se tourner vers un tableur (openoffice, excel) et faire le truc à la main.
    Bon courage!

  3. #3
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    Vu que tu es sous Linux, en bash, avec ton fichier en entrée de nom "source", en utilisant le premier champ comme nom de fichier en sortie :

    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
     
    plx@sony$ while read line
    > do
    >     echo "$line" >> `echo $line | cut -f1 -d';'`
    > done < source
    plx@sony$ ls -l
    total 16
    -rw-r--r-- 1 plx plx 1026 2009-06-20 11:10 090609_150555_M00316000_1
    -rw-r--r-- 1 plx plx  971 2009-06-20 11:10 090609_160555_M00316000_2
    -rw-r--r-- 1 plx plx 1023 2009-06-20 11:10 100609_160551_M00316000_3
    -rw-r--r-- 1 plx plx 3020 2009-06-20 10:10 source
     
    plx@sony$ cat 090609_150555_M00316000_1 > res
    plx@sony$ cat 090609_160555_M00316000_2 >> res
    plx@sony$ cat 100609_160551_M00316000_3 >> res
    plx@sony$ cmp res source
    plx@sony$ echo $?
    0
    Attention : exécutée plusieurs fois avec les mêmes données en entrée, la commande va AJOUTER les lignes aux fichiers existants (le ">>")

    Si tu veux l'éviter, un premier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    plx@sony$ for fichier in `cut -f1 -d';' source | sort -u`
    > do
    >     > $fichier
    > done < source
    permettra de les vider

  4. #4
    Membre éclairé Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Points : 823
    Points
    823
    Par défaut
    Bonjour,

    Voici une solution plus automatique. Il n'y a qu'une seule commande.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -F ';' '{print > $1}' source
    Ce qui est étonnant, c'est que la redirection '>' est intelligente dans la commande awk: À la création du fichier, la version précédente est supprimée (comme '>' dans Bash), mais pour les enregistrements suivants, ils sont ajoutés (comme '>>' dans Bash). Tant mieux!

Discussions similaires

  1. recuperer des données vers un autre fichier
    Par ALTINEA dans le forum Excel
    Réponses: 3
    Dernier message: 24/02/2010, 22h40
  2. Exportation des donées vers d'autres fichiers
    Par Arous dans le forum Oracle
    Réponses: 1
    Dernier message: 26/06/2009, 15h36
  3. Réponses: 1
    Dernier message: 12/03/2009, 09h54
  4. Réponses: 1
    Dernier message: 08/10/2008, 16h30
  5. recupration des donnees a partir de fichier EXCEL
    Par inessahal dans le forum Documents
    Réponses: 1
    Dernier message: 29/05/2007, 14h03

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