perl -F":" -lane ' BEGIN { $"=":" } push @{$h{$F[1]}}, $F[0]; $line{$F[1],$F[0]} = "@F"; }{ for $k (keys %h) { print $line{$k,$_} for splice [sort { $b <=> $a } @{$h{$k}}] , 0, 4 }' 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