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
partie de mon Script :
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
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 (,")
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);
Exécution :
comme si il me demande une suite d'un code, done le caractère " est génant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $ ./scan_file_seq_data.pl file_100K_recycle.txt 603016022400000 2 ," >
comment puis résoudre ce prob en tenant compte de toute sorte de séparateur de colonne ?
thnx in advance
Partager