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 :

prob avec caractères sépareteur de colonnes


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Par défaut prob avec caractères sépareteur de colonnes
    Bjr TLM,

    j'ai fais un petit Script qui a pour objectif "detecter la ligne du manque de l'incrémentation de valeurs sur une colonne d'un fichier"

    c'est a dire, une colonne qui contient une valeur qui s'incrémente, il t'a des lignes ou ca n'a pas incrementé, je dois trouve cette ligne,

    Fichier en entrée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    213698423808,"603016022400000,"8921301312764000000,"56458779,"05343702,"211,"11/06/2008,"17:09:58
    213698423811,"603016022400001,"8921301312764000018,"59714307,"84178095,"211,"11/06/2008,"17:10:02
    213698423813,"603016022400002,"8921301312764000026,"76047999,"25959747,"211,"11/06/2008,"17:10:10
    213698423815,"603016022400003,"8921301312764000034,"65942535,"80521203,"211,"11/06/2008,"17:10:17
    213698423816,"603016022400004,"8921301312764000042,"92678241,"00554671,"211,"11/06/2008,"17:10:20
    213698423819,"603016022400005,"8921301312764000059,"65107082,"69187630,"211,"11/06/2008,"17:10:24
    213698423821,"603016022400006,"8921301312764000067,"38704809,"22228563,"211,"11/06/2008,"17:10:36
    213698423824,"603016022400008,"8921301312764000083,"57298216,"52485419,"211,"11/06/2008,"17:10:41
    213698423831,"603016022400009,"8921301312764000091,"67353005,"62405235,"211,"11/06/2008,"17:10:44
    partie de mon Script :
    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
    
    #!/usr/bin/perl -w
    use strict;
    
    sub usage () {
                   print STDERR "\nUsage: $0 File-Data.txt First-Number Column-Number Separator-Column\n";
                   print STDERR "Version: 1.0\n";
                   print STDERR "\n"; 
                   exit(1);
                  }
    
    if ( (scalar @ARGV != 3) and (scalar @ARGV != 4) )  
                  {
                   print STDERR "Error: this script need 3 or 4 files as arguments\n";
                   usage();
                  }
    
    open FILE, "< $ARGV[0]" or die "Can't open file $ARGV[0]: $!";
    
    my $first_nb = $ARGV[1];
    my $num_col = $ARGV[2] - 1;
    my $sep = "$ARGV[3]";
    my @col;
    my $i = 0;
    
    while( <FILE> )
      {
       chomp;
       if ( scalar @ARGV == 4 ) { @col = split(/$sep/, $_); 
       if ( scalar @ARGV == 3 ) { @col = split; }
       if ( $first_nb != $col[$num_col] )  {  
                                            print STDERR "\n";
    	                                    print STDERR "----->>>>>> la valeur $first_nb n'existe pas dans le fichier $ARGV[0] la ligne $.\n";
       	                                    $i++;
    		                                $first_nb++;
    							            if ($first_nb == $col[$num_col]) {$first_nb++; next; }
    						               }
       $first_nb++;
      }
    
     print STDERR "\n-- Nombre de lignes du fichier $ARGV[0] est [$.]\n"; 
     print STDERR "\n-- Nombre de valeurs inexistantes dans le fichier $ARGV[0] est [$i]\n\n";
     close(FILE);
    
     exit(0);
    quand je donne 4 arguments, ca veut dire que je donne le separateur de colonnes, si je donne 3 arguments, ca veut dire que le séparateur de colonne est un "espace", mais ca marche pas avec le séparateur dans mon fichier (,")

    Exécution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $ ./scan_file_seq_data.pl file_100K_recycle.txt 603016022400000 2 ,"
    >
    comme si il me demande une suite d'un code, done le caractère " est génant

    comment puis résoudre ce prob en tenant compte de toute sorte de séparateur de colonne ?

    thnx in advance

  2. #2
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Ce n'est pas un problème de Perl, c'est simplement ton shell qui pense que tu as commencé une chaîne de caractère et veux que tu la finisse, la ligne suivante devrais marcher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./scan_file_seq_data.pl file_100K_recycle.txt 603016022400000 2 ',"'
    --
    Jedaï

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Par défaut
    ca marche, coool , merci, mais si j'ai comme séparateur le caractère ',

    je vais proceder comment ?

  4. #4
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Pour tout autre question, merci de te référer à la manpage de ton shell pour les conventions de quoting....

    --
    Jedaï

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Par défaut
    merci, ca marche trés bien

    desolé si je suis débutant en Perl,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Chaines avec caractères accentués dans interbase
    Par Tsimplice dans le forum Bases de données
    Réponses: 4
    Dernier message: 08/03/2004, 17h12
  2. [composant][MX_2004_pro] prob avec scrollpane
    Par scorpiwolf dans le forum Flash
    Réponses: 6
    Dernier message: 12/01/2004, 20h18
  3. Prob avec dates delphi
    Par ericmart dans le forum ASP
    Réponses: 6
    Dernier message: 20/10/2003, 17h51
  4. prob avec utilisation de package
    Par martijan dans le forum Modules
    Réponses: 13
    Dernier message: 11/07/2003, 09h37
  5. Thread probs avec WaitFor()
    Par pixelrock dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/11/2002, 09h40

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