Bonjour,
Ce qui suit a trait au tri dans des données.
Ce texte a été mal déposé dans la rubrique "discussion".
Je vais tenter de le virer de là...
Voilà 9 jours que j'ai débuté l'étude de Perl pour pouvoir manipuler un gros fichier qui va encore croître.
J'ai fais pas mal de choses mais maintenant je cale.
Et je sais que c'est l'emploi des hashes qui me pose problème.
Pourriez vous me dire comment aborder mon problème, assez banal, je crois.
Après je pourrai avancer tout seul un peu plus loin...
Mon fichier se nomme trier.txt
Il a la srtucture suivante:
FLAG_CONSTANT
WALL LARRY
Datas en texte libre de longueurs différentes
Nombre de lignes variable
Data_WALL Data_WALL Data_WALL
Data_WALL
Data_WALL Data_WALL
FLAG_CONSTANT
CESAR JULES
Datas en texte libre de longueurs différentes
Nombre de lignes variable
Data_CESAR
Data_CESAR Data_CESAR
FLAG_CONSTANT
OBAMA BARAK
Datas en texte libre de longueurs différentes
Nombre de lignes variable
Data_OBAMA Data_OBAMA
Data_OBAMA
Data_OBAMA
######
Je voudrais, faire un tri, par ordre alphabétique, sur la deuxième ligne
de ces "fiches" et obtenir en sortie:
FLAG_CONSTANT
CESAR JULES
Datas en texte libre de longueurs différentes
Nombre de lignes variable
Data_CESAR
Data_CESAR Data_CESAR
FLAG_CONSTANT
OBAMA BARAK
Datas en texte libre de longueurs différentes
Nombre de lignes variable
Data_OBAMA Data_OBAMA
Data_OBAMA
Data_OBAMA
FLAG_CONSTANT
WALL LARRY
Datas en texte libre de longueurs différentes
Nombre de lignes variable
Data_WALL Data_WALL Data_WALL
Data_WALL
Data_WALL Data_WALL####################"
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 #################### # Avec le script suivant j'affiche les noms seuls, mais # ils ne sont pas triés. #Les Datas attachées à chaque nom ne suivent évidemment pas. use strict; use warnings; use diagnostics; open FICHIER,"< trier.txt" or die "Le fichier n'existe pas !"; my $i = 0; while (<FICHIER>) { /FLAG_CONSTANT/and $i = 0; print " $_" if $i==1; ++$i; } close FICHIER;
Merci d'avance.
Roland.
Partager