Hallo, Am Sam, 04 Nov 2006, Mario van der Linde schrieb: [..]
$ sort -n -t: -k3,5 test.dat de Leaping:Gwen:Fairing Track Society:26:Ladies Fleetman:Fred:Rundale Sportsters:217:Men Jumpabout:Mike:Fairing Track Society:154:Men Longshanks:Loretta: Pantington AC:55:Ladies [...] und herauskommen sollte eigentlich dieses:
de Leaping:Gwen:Fairing Track Society:26:Ladies Jumpabout:Mike:Fairing Track Society:154:Men O'Finnan:Jack:Fairing Track Society:45:Men Runnington:Vivian:Lameborough TFC:117:Ladies [...]
Du willst nach 'Men/Ladies' sortieren? Oder nach den Nummern? Für ersteres müsstest du die Felder umsortieren: awk -F: '{ printf("%s:%s:%s:%s:%i\n", $1, $2, $3, $5, $4); }' \ | sort -bfi -t: -k 3 \ | awk -F: '{printf("%s:%s:%s:%i:%s\n", $1, $2, $3, $5, $4); }' de Leaping:Gwen:Fairing Track Society:26:Ladies Jumpabout:Mike:Fairing Track Society:154:Men O'Finnan:Jack:Fairing Track Society:45:Men Runnington:Vivian:Lameborough TFC:117:Ladies Mit -k kannst du nur einen _Bereich_ auswaehlen, nicht einzelne Schlüssel. Wenn du aber eine Allzweckwaffe haben willst kann ich Perl empfehlen (zumindest wenn die Daten nicht allzugroß werden, aber das Problem hast du immer, wenn du sortieren willst). ==== #!/usr/bin/perl -w use strict; sub mysort { return $a->[2] cmp $b->[2] || $a->[4] cmp $b->[4]; ### numerischer Vergleich Feld 4 waere: $a->[3] <=> $b->[3] ### erstes Kriterium || zweites || ... || ntes Kriterium ### siehe perldoc -f sort } my @lines; while(<>) { chomp; push(@lines, [split(":",$_)]); } foreach ( sort mysort @lines ) { print join(":", @{$_}), "\n"; } 1; ==== Du kannst so nach beliebigen Kriterien sortieren. -dnh -- What's the speed limit on sex? 68. At 69, you have to turn around