C:\temp>perl -F, -ane "BEGIN{$c = shift} push @a, [@F]; END{print join(',' => @$_) for sort {($a->[abs($c)-1] cmp $b->[abs($c)-1]) * $c} (@a)};" -- -3 grades.csv Jim,72,IL Rob,63,FL Mike,67,CA Chan,32,AZ