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 :

Traitement sur fichiers plats


Sujet :

Shell et commandes POSIX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Septembre 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Paramétreur de progiciels
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1
    Par défaut Traitement sur fichiers plats
    Bonjour,
    Je dispose de 4 répertoires contenant 4 fichiers, voici un exemple de répertoire :
    .
    répertoire : AN2013 (contenant les 4 fichiers suivants
    .
    contenu du fichier clients2013.txt :
    societe,nom,prenom,adr1,adr2,cp,ville,num_client,tel,fax 
    apelog,durand,michel,30 bd de belfort,,75010,paris,12320,0125412563,01254120 
    domilux,dupond,pierre,60 rue de la paix,5e et,69000,lyon,45741,0420156230,0420156240 
    frupan,limoux,jacques,45 rue d'orleans, bat A,44000,nantes,12345,0352656845,0352656840 
    .
    contenu du fichier cde_textile2013.txt :
    reference_cde_txt,num_commande,montant,nb_articles,num_clt, 
    AE521,8574,175.30,8,45741 
    DF854,9685,1478.30,10,12345 
    .
    contenu du fichier cde_bazar2013.txt :
    ref_cde_baz,client_numero,numero_commande,montant_global,nb_art 
    TGY56435,12345,8526,4521.30,9 
    EDR69854,12345,6541,741.20,5 
    ZSD69856,12320,8874,145.30,6 
    .
    contenu du fichier cde_alimentaire2013.txt :
    ref_commande_alim, number_cde, numero_client,total,poids 
    U451,45621,12345,7854.20,1854 
    O852,74741,45741,741.50,481 
    .
    Sachant que la clé unique est : num_client=num_clt=client_numero=numero_client.
    Sachant que pour un client il peut y avoir de 0 à X lignes dans cde_textiles, cde_bazar,cde_alimentaire
    Sachant que j'ai plusieurs répertoires, un par année, comprenant à chaque fois les 4 fichiers
    .
    Je veux extraire dans 4 fichiers indépendants (au même format que les fichiers ci-dessus), dans 4 répertoires (un par année de NANTES_AN2010 à NANTES_AN2013) donc 16 fichiers en tout, tous les clients et les commandes qui sont issues de la ville de Nantes (et seulement ceux de la ville de Nantes)
    .
    je dois écrire le programme en shell sous unix,
    je pense devoir utiliser awk, mais je me casse les dents dessus ...
    .
    si quelqu'un peut m'aider, merci
    Hervé

  2. #2
    Membre éprouvé
    Homme Profil pro
    consultant ETL
    Inscrit en
    Septembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : consultant ETL
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2008
    Messages : 97
    Par défaut
    Bonjour,

    Qu'avez vous déjà essayé ?

  3. #3
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 358
    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 358
    Par défaut
    Bonjour,
    Pour le fichier client, on grep les lignes pour trouver nantes en septieme position:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep '^\([^,]*,\)\{6\}nantes,' client >res_client
    Pour récupérer les numero de client:
    pour textile:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep '^\([^,]*,\)\{4\}1234$' file
    en remplaçant 1234 par le vrai numero de client
    pour bazar:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep '^\([^,]*,\)\{1\}1234,' file
    et pour alimentaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep '^\([^,]*,\)\{2\}1234,' file
    Voila, plus qu'a enrober tout ça dans une boucle

Discussions similaires

  1. Cherche une commande shell/bash pour traitement sur fichier
    Par breizho35 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 26/02/2015, 11h18
  2. Parcourir une arborescence puis traitement sur fichier
    Par linuxdeb dans le forum Shell et commandes GNU
    Réponses: 20
    Dernier message: 13/12/2013, 16h02
  3. Batch : Traitement sur fichier txt
    Par vita83 dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 13/09/2008, 08h08
  4. Réponses: 13
    Dernier message: 24/10/2006, 14h17
  5. Extraction SQL sur fichier à plat
    Par ninon74 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 19/10/2006, 15h58

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