bonjour,
J'ai commencé perl que trés récément et en "autoformation". Ce qui fait que parfois je bloque....
et là je ne sais plus comment faire!
Je cherche à faire un tri sur un fichier txt qui se présente sous la forme suivante:
Tue 1/12/10 07:34:13: , 127.0.0.1, 29, 0,1, toto, tata, , titi1
Tue 1/12/10 07:34:13: , 127.0.0.1, 29, 0,1, toto, tata, , titi2
Tue 1/12/10 11:34:13: , 127.0.0.1, 31, 0,1, toto, tata, , titi3
Tue 1/12/10 08:34:13: , 127.0.0.1, 29, 0,1, toto, tata, , titi1
Tue 1/12/10 14:34:13: , 127.0.0.1, 29, 0,1, toto, tata, , titi4
...... avec bien sur des milliers de lignes.
le but final de mon script est de compter le nombre de titi distinct heure par heure!
Mon problème initial est que je ne sais pas comment récupérer que telle ou telle colonne de ce fichier txt (qui pour la petite histoire est l'accumulation de 4 autres fichiers!!).
En effet, si je considère les espaces comme séparateur, seules la colonne 1, 2, 3 et la dernière m'intérressent.
Initiallement, dans ma première version du script, je ne prenais pas en compte cette variable du temps. Par conséquent, il me suffisait de garder le dernier champs.
Pour cela, je passais par:
mais afin de pouvoir faire un tri ultérieurement sur les dates, colonnes 1, 2 et 3 (pour un futur split heure/heure --> va pas être simple non plus), il me faut garder plusieurs champs et là je bloque!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 open(FILE,"<$file") or die ("Impossible to open the file $file.\n"); while( my $line = <FILE> ) { #retrive the last field of each line my $last_field = (split m/\s+/, $line)[-1]; #store in the list of result, only the fields whith the length between 2 and 20 digits if ((length($last_field) < 2) || (length($last_field) > 20)) { } else { push (@complete_users_list, $last_field); } } close FILE;
Par avance merci pour votre aide
Yzf-r
Partager