in reply to Double Sort Rephrased
in thread Double Sort on a file
You want to sort the whole row as a string, then sort on the first column numerically, correct?
#!/usr/bin/perl -w use strict; my @sorted = map {$_->[0]} sort { $a->[0] cmp $b->[0] || $b->[1] <=> $a->[1] } map {[ $_ ,/(\w+)\s+(\w+)\s+(\w+)/]} <DATA> ; print for @sorted; __END__ 2 4 a 1 9 b 6 8 a
UPDATED
My mistake- I thought you were asking a perl perlfunc:sort question, rather than Gnu sort. (I also didn't realize that this was a mid-thread revision of the subj. line .). For a perl question, then you would be looking for...
my @sorted = map {$_->[0]} sort { $a->[3] cmp $b->[3] || # sorted ascending alpha on col 3 $b->[2] <=> $a->[2] # then sorted reverse num on col 2 } map {[ $_ ,/(\w+)\s+(\w+)\s+(\w+)/]} <DATA> ; print for @sorted;
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: Double Sort Rephrased
by rchou2 (Novice) on Jul 22, 2002 at 23:03 UTC | |
by rchou2 (Novice) on Jul 22, 2002 at 23:18 UTC | |
by rchou2 (Novice) on Jul 23, 2002 at 13:44 UTC |