perl -F':' -lane ' push @{$h{$F[1]}}, [$F[0],$_] }{ print $_->[1] for map { ( sort {$b->[0] <=> $a->[0]} @$_ )[0..3] } val +ues %h' file 20470:ZM:Samfya:Africa 20149:ZM:Sesheke:Africa 18638:ZM:Siavonga:Africa 699385:ZW:Bulawayo:Africa 61739:ZW:Chinhoyi:Africa 47294:ZW:Chegutu:Africa 37423:ZW:Bindura:Africa
Please note that countries with less than 4 cities will have empty lines.
But I'd rather prefer chaining only maps...
Cheers Rolf
( addicted to the Perl Programming Language)
to avoid empty lines skip the -l option
perl -F':' -ane ' push @{$h{$F[1]}}, [$F[0],$_] }{ print $_->[1] for map { ( sort {$b->[0] <=> $a->[0]} @$_ )[0..3] } val +ues %h' file 20470:ZM:Samfya:Africa 20149:ZM:Sesheke:Africa 18638:ZM:Siavonga:Africa 699385:ZW:Bulawayo:Africa 61739:ZW:Chinhoyi:Africa 47294:ZW:Chegutu:Africa 37423:ZW:Bindura:Africa
values instead of keys
(List)[slice] instead of splice
-l chomps and sets auto-newline in $\
In reply to Re^5: Using map function to print few elements of list returned by sort function
by LanX
in thread Using map function to print few elements of list returned by sort function
by jaypal
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |