-- #!/usr/bin/perl my $str = `type unsort.txt`; $str = join("\n", map($_->[0], sort( {$a->[0] cmp $b->[0] } map( [$_, (split('|', $_))[-1] ], split(/\n/, $str) ) ) ) ); print $str; -- #### -- xyz4|1026|CR xyz3|3461|CR dert5|3251|PR rtyaq|251|PR dbca|583|PR xxxt|360|CR -- #### dbca|583|PR dert5|3251|PR rtyaq|251|PR xxxt|360|CR xyz3|3461|CR xyz4|1026|CR #### sort( {$a->[1] cmp $b->[1] } #### -- xyz4|1026|CR xyz3|3461|CR dert5|3251|PR rtyaq|251|PR dbca|583|PR xxxt|360|CR --