#!/usr/local/bin/perl -w use strict; use vars qw($field @lines @sorted_lines); $field=shift @ARGV; @lines=<>; # This is the Schwartzian transform @sorted_lines= map { $_->[0] } sort { $a->[1] cmp $b->[1] } map { [$_, (split(/,\s*/, $_))[$field] ] } @lines; print @sorted_lines;