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

Langage Perl Discussion :

Somme de differentes lignes égales


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 58
    Par défaut Somme de differentes lignes égales
    Bonjour,

    J ai un fichier avec des personnes et un capital. Comme ceci:

    Pol 256
    gregory 365
    michel 152
    pol 152
    francois 65
    christophe 654
    michel 56

    Je voudrais faire un script que va me retourner Ceci : le nom des personnes avec la somme de leur capital.

    Pol (256+152)
    gregory 365
    michel (152+56)
    francois 65
    christophe 654


    Merci,


    Mimiche

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 606
    Par défaut
    Citation Envoyé par Mimiche Voir le message
    Bonjour,

    J ai un fichier avec des personnes et un capital. Comme ceci:

    Pol 256
    gregory 365
    michel 152
    pol 152
    francois 65
    christophe 654
    michel 56

    Je voudrais faire un script que va me retourner Ceci : le nom des personnes avec la somme de leur capital.

    Pol (256+152)
    gregory 365
    michel (152+56)
    francois 65
    christophe 654


    Merci,


    Mimiche
    Bonjour,

    peux-tu nous montrer le code que tu as fait stp ?

    Si pas déjà commencé, pour t'aiguiller sur une manière (parmi d'autres) de procéder :

    - en supposant qu'une ligne contienne 2 valeurs (nom, capital) séparées par une tabulation, tu splittes chaque ligne ce qui te permet d'avoir le nom et le capital bien distincts
    - je te suggère de mettre le nom en minuscule car Perl est sensible à la casse
    - tu te concocte un hash de listes. la clé = le nom (voilà pourquoi mieux vaut que tous tes noms soient en minuscules), la liste contenant tous les capitaux trouvés pour ce nom

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 58
    Par défaut
    Bonjour,

    En fait mon script est plus compliqué que cela. Je ai pris un exemple avec des personens et un capital pour que ca ne soit pas trop difficil a expliquer.

    En réalité, mon script doit me permettre de faire cela avec des machines et des groupes.

    J ai en entrée : (enregistré en CSV)

    machine1;community;groupe1
    machine2;community;groupe2
    machine1;community;groupe3
    machine2;community;groupe2
    machine2;community;groupe3

    Mon script va compter les port ethernet et up de la machine qui correspond au groupe.

    Avec le script que j'ai, j'ai en sortie :

    groupe1 Nombre total de port :... Port ethernet ... ethernet up...
    groupe2 Nombre total de port :... Port ethernet ... ethernet up...
    groupe3 Nombre total de port :... Port ethernet ... ethernet up...
    groupe2 Nombre total de port :... Port ethernet ... ethernet up...
    groupe3 Nombre total de port :... Port ethernet ... ethernet up...

    J aimerai qu'il me fasse la somme des ports des meme groupe. Pour le groupe 2 et 3, qu'il me fasse la somme des ports.

    Est ce que je uis assez clair ?

    Voici mon code :


    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    use strict;
    use Data::Dumper;
     
    BEGIN {
    	unshift @INC, '/PRD/SYDN/perl-lib';
    };
     
    use Net::SNMP;
     
     
    my %ifCount;
    my @device=($_);
    my $device;
    my $ligne;
    my %Count;
     
     
     
    open FICHIER,"<input.csv " or die "le fichier n existe pas";
     
     
    while ($ligne = <FICHIER>){
    chomp ($ligne);
     
    my $machine;
    my $community;
    my $groupe;
     
     
     
    	foreach($ligne) {
    	%ifCount=0;
    	($machine,$community,$groupe) = split (/;/,$ligne);
     
     
     
    my ($session, $error) = Net::SNMP->session(
    			      -version     => 'snmpv2c',
    			      -hostname    => $machine,
    			      -community   => 'nVNmgAix',
    			      -port        =>  161 ,
    			      -timeout=> 1
     
    			   );
     
    	if ($error) {print $error; exit}
     
     
    my $ifIndex                     = $session->get_table(  -baseoid => "1.3.6.1.2.1.2.2.1.1" );
    my $ifType			= $session->get_table(	-baseoid => "1.3.6.1.2.1.2.2.1.3" );
    my $ifLabel			= $session->get_table(	-baseoid => "1.3.6.1.2.1.31.1.1.1.1" );
    my $ifOperStatus		= $session->get_table(	-baseoid => "1.3.6.1.2.1.2.2.1.8" );
     
     
    foreach  my $nbport (values %$ifIndex) {
     
     
     
                      $ifCount{$device[0]}{glob}++;
    		  next unless $$ifType{'1.3.6.1.2.1.2.2.1.3.'.$nbport} == 6; 
        		  $ifCount{$device[0]}{total}++;
                      $ifCount{$device[0]}{up}++   if $$ifOperStatus{'1.3.6.1.2.1.2.2.1.8.'.$nbport} == 1 ;
    }		
     
     
     
    print     	      "Groupe: $groupe\t".
    		      "Nombre total de ports:$ifCount{$device[0]}{glob}\t".
    		      "Nombre ports Ethernet:$ifCount{$device[0]}{total}\t".
    		      "Port Ethernet UP:$ifCount{$device[0]}{up}\n";
     
    }
     
    }
     
     
    close FICHIER;






    Merci,


    Mimiche

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    veuillez mettre votre code sous balise code, c'est illisible (c'est le #).

    Merci

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 58
    Par défaut
    Bonjour,

    Personne ne peut m aider ? En fait, je dois faire l addition des ports des machine qui ont le meme groupe. Si une machineA et une machineB ont le meme groupe, alors on va faire la somme des ports des 2 machines.

    Merci,

  6. #6
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 58
    Par défaut
    Personne ne peut m aider ? Ou vous ne comprenez pas mon problème ?

    Merci,

Discussions similaires

  1. Somme sur une ligne
    Par Korleone dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 13/02/2008, 11h45
  2. [FAQ VBA Excel] Somme d'une ligne d'un tableau sur un classeur fermé
    Par nox1492 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/12/2007, 12h54
  3. [VBA-E] : somme de deux lignes ayant des positions variables
    Par johnmakina dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/01/2007, 16h47
  4. [Trigger] Somme de différentes lignes
    Par outlawz dans le forum Oracle
    Réponses: 5
    Dernier message: 08/09/2006, 16h32
  5. somme sur plusieurs lignes d'un dbgrid
    Par pierrot67 dans le forum Bases de données
    Réponses: 11
    Dernier message: 11/07/2006, 10h24

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