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 :

Couper un fichier texte en plusieurs selon critères


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Par défaut Couper un fichier texte en plusieurs selon critères
    Bonjour,

    j'ai un fichier Fich1 qui contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    blabla;blabla;AA;blabla;
    bdujej;hdieie;BB;heokke;
    sheyru;jejdod;BB;heurio;
    blabla;blabla;BB;blabla;
    bdujej;hdieie;CC;heokke;
    sheyru;jejdod;DD;heurio;
    blabla;blabla;EE;blabla;
    bdujej;hdieie;EE;heokke;
    sheyru;jejdod;FF;heurio;
    je voudrais avec un shell en BASH créer à patir de ce fichier 6 fichiers nommés FichAA, fichBB, fichCC, FichDD, FichEE et FichFF
    chacun des 6 fichiers devant contenir les lignes du Fich1 ayant la 3eme colonne identique : je m'explique !

    le fichier FichAA sera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    blabla;blabla;AA;blabla;
    le fichier FichBB sera :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    bdujej;hdieie;BB;heokke;
    sheyru;jejdod;BB;heurio;
    blabla;blabla;BB;blabla;
    etc...

    sachant que je ne sais pas à l'avance les valeurs qui y a en 3eme colonne du Fich1 (dans le réel se sera un identifiant)

    Merci pour vos retour si vous avez des idées....

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 722

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Par défaut merci
    merci N_BaH pour ce retour.
    oui j'arrive à lire le fichier comme indiqué dans ton tuto
    mais ce que je n'arrive pas à faire c'est intégrer une boucle de lecture avec un test de comparaison sur la 3eme colonne
    et envoyé chaque ligne avec le 3eme champ identique dans un fichier

  4. #4
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 417
    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 417
    Par défaut
    Quelles comparaisons veux-tu faire ?
    Quel est l'utilité ?

    Ici, tu n'as qu'a récupérer le 3ème champs dans une variable que tu utilises dans le nom du fichier vers lequel tu redirigeras la ligne entière.
    Ça tient en 3 lignes.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 722
    Par défaut
    et montre-nous ce que tu as fait.

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Quelles comparaisons veux-tu faire ?
    Quel est l'utilité ?

    Ici, tu n'as qu'a récupérer le 3ème champs dans une variable que tu utilises dans le nom du fichier vers lequel tu redirigeras la ligne entière.
    Ça tient en 3 lignes.
    LA comparaison est sur la valeur d'un champs (le 3eme par exemple) d'une ligne par rapport au champs (le 3eme) de la ligne suivant.
    si les champs sont identiques je continu à lire le fichier source (trié sur le 3eme champ) en mettant chaque ligne dans un fichier.
    Dés que le 3champs change de valeur, je met la ligne dans un autre fichier.. et ainsi de suite jusqu'à la fin de lecture du fichier source.

    En final j'aurai donc autant de fichier que de valeur différente du 3eme champ du fichier source. chaque fichier ayant toutes les lignes du fichier source avec le même 3eme champs.

    voir message en début de discussion.

    Merci

  7. #7
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 417
    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 417
    Par défaut
    Non, pas besoin de comparer, tu suis la procédure que je t'ai donné, c'est suffisant (en pseudo-code) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    WHILE READ ligne Fich1
        VAR:=3ème champs de la ligne
        NOM_FICHIER:="fich"VAR
        PRINT ligne en fin de fichier NOM_FICHIER

Discussions similaires

  1. Couper un fichier texte en plusieurs fichiers texte
    Par Wim88 dans le forum Général Java
    Réponses: 2
    Dernier message: 30/12/2013, 01h57
  2. Réponses: 2
    Dernier message: 19/04/2007, 14h54
  3. Couper un fichier html en plusieurs fichiers
    Par Petitcodeur dans le forum Langage
    Réponses: 9
    Dernier message: 16/10/2006, 16h27
  4. Eclater une colonne en plusieurs selon critère
    Par Tatoine dans le forum Langage SQL
    Réponses: 5
    Dernier message: 14/07/2006, 12h19
  5. Réponses: 2
    Dernier message: 02/02/2006, 19h21

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