Sortieren mit Perl...
Florian Lohoff
flo at rfc822.org
Wed Jan 26 12:32:16 CET 2000
On Wed, Jan 26, 2000 at 07:37:45AM +0100, Tobias Lachmann wrote:
> Hallo!
>
> Ich sortiere gerade ein Logfile, es enthält verschiedene Einträge:
>
> UserGD;9;0;1.0
> UserCX;5;0;1.0
> UserGF;3;9;0.25
> UserSA;6;4;0.6
> usw.....
Du packst dir das erstmal in ein hash ..
foreach (<STDIN>) {
my @f=split(/;/,$_);
$hash{$f[0]}{$f[1]}{$f[2]}{$f[3]}=1;
}
> ich möchte jetzt folgende Sortierung vornehmen:
>
> 1. Kriterium: Spalte 4, Absteigend
> 2. Kriterium: Spalte 2, Absteigend
> 3. Kriterium: Spalte 1, Aufsteigend
Dann sortieren bzw sortiert ausgeben ...
foreach $user ( sort keys %hash ) {
foreach $col1 ( sort keys ${ $hash{$user} } ) {
foreach $col2 ( sort keys ${ $hash{$user}{$col1} } ) {
foreach $col3 ( sort keys ${ $hash{$user}{$col1}{$col2} } ) {
print "$user;$col1;$col2;$col3\n";
}
}
}
}
Fuer reverse sort oder selbstgebastelte sortierroutinen
solltest du dir mal "man perlfunc" ansehen ...
Im prinzip geht das so ...
sort { $b <=> $a }
anstatt dem "sort" in den foreach zeilen - Dann sollte
das reverse sein ... Ich weiss nicht inwieweit sort
mit rationalen zahlen umgehen kann -> ausprobieren
sonst eigene routine schreiben.
Flo
--
Florian Lohoff flo at rfc822.org +49-5241-470566
"Technology is a constant battle between manufacturers producing bigger and
more idiot-proof systems and nature producing bigger and better idiots."
More information about the Linux
mailing list