$ perl -E 'say join",",map{int rand 1000000} 1..20 for 1..1000000' > sample.csv #### $ time cut -d"," -f 17 sample.csv | sort | uniq > out real 0m4.391s user 0m4.788s sys 0m0.060s $ time perl -F, -E '$s{$F[16]}++ }{ say for sort keys %s' sample.csv > out real 0m6.716s user 0m6.668s sys 0m0.048s