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 :

Tri sur blocs de données avec AWK


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Janvier 2011
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 1
    Par défaut Tri sur blocs de données avec AWK
    Bonjour,

    je débute sur ce forum, et sur AWK... Pardonnez moi si cette question a déjà été posée, mais je suis encore un peu perdue sur le forum.

    Je dispose d'un fichier de ce type (cf piece jointe). Mon fichier complet présente plus de 1300 blocs de données séparées a chaque fois par 2 lignes blanches.

    Je souhaiterais extraire chaque blocs de données dans un fichier qui lui est propre, dont le nom du fichier correspondrait a la 1ere colonne de la 3eme ligne.

    Comment faire cela en utilisant awk ??

    Par avance merci !

    Delphine
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    awk '            
    BEGIN { RS = "" ; FS = "\n" }
    {
          fd=substr($3, 0, 12);
          print >> fd;
    }' data.txt
    En supposant qu'il n'y a pas de caractères bizarres, et que tes numéros font exactement 12 chiffres.
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 635
    Par défaut
    Citation Envoyé par adelphine
    [...]le nom du fichier correspondrait a la 1ere colonne de la 3eme ligne
    de chaque bloc.

    C'est ainsi que je l'ai compris...
    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
    #!/usr/bin/awk  -f
     
    function Copie(array, max, fichier){
       for(i=1; i<=max; i++) {print array[i] >> fichier}
    }
    {
       if(NF > 1){
          text[++n] = $0
          if(n == 3){filename = $1}
       }else{
          getline
          if(NF == 1){ Copie(text, n, filename); n = 0 }
       }
    }
    END{
       Copie(text, n, filename)
    }
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. [AC-2003] recherche infos sur base de données avec photos
    Par ALBIG82 dans le forum IHM
    Réponses: 1
    Dernier message: 14/05/2009, 10h03
  2. Tri sur une list(of) avec classe perso
    Par Faladin dans le forum VB.NET
    Réponses: 9
    Dernier message: 04/08/2008, 20h13
  3. Agrégation des données avec awk
    Par miketidy dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 14/06/2008, 07h50
  4. Réponses: 4
    Dernier message: 22/04/2008, 11h27
  5. Réponses: 2
    Dernier message: 10/11/2005, 16h59

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