perl -F":" -lane ' BEGIN { $"=":" } push @{$h{$F[1]}}, $F[0]; $line{$F[1],$F[0]} = "@F"; }{ for $k (keys %h) { print @$_ for map [ $line{$k,$_} ], sort { $b <=> $a } @{$h{$k}} }' 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 28205:ZW:Chiredzi:Africa 26459:ZW:Beitbridge:Africa 18860:ZW:Chipinge:Africa