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

Programmation et administration système Perl Discussion :

Aide sur finition sur Script Traitement de données


Sujet :

Programmation et administration système Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Informatique
    Inscrit en
    Mars 2013
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 203
    Par défaut Aide sur finition sur Script Traitement de données
    Bonjour à tous,

    Suite à la recommandation de Lolo78, j'ouvre une nouvelle discusion pour plus de visibilité.

    Vous trouverez ci-joint :
    - Mes données
    - Mon script
    - Le résultat de mon script
    - Le résultat attendu

    Petit résumé "pratique de mon script" :
    Comme vous l'avez compris mon script lit 4 fichiers pour en ressortir des données. Principalement "name" et "capacity"
    Pour le moment, il commence à collecter les données dés qu'il voit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /^id:name:IO_group_id:/;
    Il fait un tas de test pour les grouper par types, etc. bref vous allez comprendre en chechant les données et résultat.

    Et voici ce que j'aimerai faire/ce qu'il me manque :
    Voilà les deux éléments qu'ils me manquent :

    1) Comme dis plus haut, je passe tant qu'il ne voit pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /^id:name:IO_group_id:/;
    (ne manière très simplifié). Maintenant le soucis c'est que j'ai besoin également de ce qui a avant cette ligne dans mon fichier de données.
    Donc dans le fichier de données, je dois récupérer ceci aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    id:name:status:mdisk_count:vdisk_count:capacity:extent_size:free_capacity:virtual_capacity:used_capacity:real_capacity:overallocation:warning:easy_tier:easy_tier_status:compression_active:compression_virtual_capacity:compression_compressed_capacity:compression_uncompressed_capacity:parent_mdisk_grp_id:parent_mdisk_grp_name:child_mdisk_grp_count:child_mdisk_grp_capacity:type:encrypt:owner_type:site_id:site_name
    0:NBB2_CORP_DS8K8:online:38:252:124.98TB:1024:9.39TB:115.59TB:115.58TB:115.58TB:92:90:on:active:yes:5.00GB:3.28MB:0.00MB:0:NBB2_CORP_DS8K8:0:0.00MB:parent:no:none::
    1:MigrationPool_8192:online:0:0:0:1024:0:0.00MB:0.00MB:0.00MB:0:80:auto:balanced:no:0.00MB:0.00MB:0.00MB:1:MigrationPool_8192:0:0.00MB:parent::none::
    Le soucis que j'ai, c'est que, ici je dois récupérer 3 valeurs : name, capacity et free_capacity. Et évidemment, ce n'est pas les mêmes positions que la suite des données (sinon ça aurait été très simple ...). Mon soucis est : Comment pouvoir séparer la lecture des deux ?

    Je ne veux pas les travailler comme ce qui est présent actuellement dans mon fichier EXCEL, ce que je veux, c'est juste récupérer le "name", "capacity" et "free_capacity" de ces lignes et les afficher ensuite bêtement dans mon Excel.

    2) A un moment, dans mon script, je crée une sorte de catégorie "Other", pour en faire un total.
    J'aimerai, en plus de continuer ceci, pouvoir les afficher ailleurs dans mon script (Name + capacity). Je n'y arrive pas du tout ...

    Voilà, désolé, je ne suis pas très bon en explication par écrit.
    Si vous n'avez pas compris quelque chose, n'hésitez pas, ce n'est pas vous qui n'avez pas compris, c'est surement moi qui ai mal expliqué

    Merci d'avance !
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    dans la première partie de ton fichier, il y a six lignes au format spécial dont tu parles (sans compter l'entête). Est-ce que tu veux récupérer les valeurs de toutes ces lignes, et éventuellement les associer au numéro d'ID? Ou seulement la première de ces lignes? Ou autre chose?

  3. #3
    Membre confirmé
    Homme Profil pro
    Informatique
    Inscrit en
    Mars 2013
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 203
    Par défaut
    Bonjour Lolo,

    Je veux toutes les récupérer mais traiter uniquement name, capacity et free_capacity.
    C'est suffisant comme réponse ?

  4. #4
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    est-ce suffisant? Oui et non. Oui pour présenter un algo général de lecture du fichier, mais pas plus que cela, puisque je ne sais pas ce que tu veux faire avec ces données ensuite.

    Une solution possible simple est de lire le contenu du fichier dans une première boucle while traitant la première série de lignes et de sortir de cette boucle while pour embrayer avec la boucle qui existe déjà quand tu rencontres une ligne reconnue par /^id:name:IO_group_id:/ :
    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
    24
    25
     
    my $fichier = shift;
    open my $FH, "<", $fichier or die "Ouverture impossible du fichier $fichier";
    my %count;
    # my $saut = 1;  # n'est plus nécessaire
     
    my %header_values;
    while  (my $line = <$FH>) {                               # première boucle pour lire le premier groupe de lignes
        last if $line =~ /^id:name:IO_group_id:/;             # sort de cette boucle et passe à la suivante pour la suite des données
        next if $line =~/id:name:status:mdisk_count:/;        # saute la ligne d'entête
        next if $line =~ /^\s*$/;                             # saute d'éventuelles lignes vides
        my ($id, $name, $capacity, $free) = (split /:/, $line)[0, 1, 5, 7];
        $header_value{$id} = { name => $name, capacity => $capacity, free_capacity => $free}; # stockage des valeurs qui t'intéressent dans un hash
    }
     
    while (my $line = <$FH>) {
    	# $saut = 0 if $line =~ /^id:name:IO_group_id:/;  # plus nécessaire, fait dans la première boucle
    	# next if $saut;                                  # plus nécessaire non plus
            next if $line =~ /^\s*$/;                         # saute d'éventuelles lignes vides
    	my ($name, $capacity) =  (split /:/, $line)[1, 7];
     
    	if ($capacity =~ /^(\d+\.\d+)(\w+)$/) {
    		my $number = $1;
    		my $type = $2;
            # ...
    A la fin, le hachage de hachages %header_values contient les valeurs qui t'intéressent dans les lignes d'entêtes, rangées par ID. Tu en fais ce que tu veux.

  5. #5
    Membre confirmé
    Homme Profil pro
    Informatique
    Inscrit en
    Mars 2013
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 203
    Par défaut
    Merci je vais essayer et regarder tout ça !
    Les données je veux juste simplement les afficher dans un fichier Excel et je fais mes calculs dedans

  6. #6
    Membre confirmé
    Homme Profil pro
    Informatique
    Inscrit en
    Mars 2013
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 203
    Par défaut
    Salut Lolo!

    Je reviens après pas mal de temps car j'ai encore eu des projets hyper importants.
    Désolé !

    J'ai testé ton code et ça fonctionne (J'ai print le Dumper pour voir).

    Mon soucis c'est, plutôt comment l'utiliser maintenant ?
    Mon but final serait de l'input dans un fichier Excel qui ressemble à ça :

    name capacity free_capacity
    DRIVENAME 0 TB 0 TB


    Comment faire ?

    Au début je pensais en utilisant l'ID mais vu que je traîte plusieurs fichiers, mon output à des ID doublons.
    Exemple :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    '2' => {
                       'name' => 'NBB2_DMZ_STW24',
                       'capacity' => '75.27TB',
                       'free_capacity' => '60.41TB'
                     },
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     '2' => {
                       'name' => 'NBB4_DMZ_STW44',
                       'capacity' => '75.27TB',
                       'free_capacity' => '59.77TB'
                     },
    Merci!

Discussions similaires

  1. Aide sur un code de collecte de donnée sur plusieurs documents
    Par ahzouari dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/01/2011, 08h26
  2. Réponses: 22
    Dernier message: 02/02/2009, 20h36
  3. [MySQL] Conseil sur traitement des données
    Par Feng-Huang dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 07/01/2009, 12h16
  4. Aide de demarrage sur un script perso
    Par 74manu74 dans le forum Shell et commandes GNU
    Réponses: 24
    Dernier message: 22/11/2008, 23h27
  5. Demande d'aide sur la liaison avec base de données mysql
    Par almora007 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 06/08/2007, 14h19

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