Hello raghuprasad241,
It seems that the values (i.e., the data in columns 1, 2, etc.) are independent of the keys (i.e., the data in column 0). If, in addition, the values are always in order, then the simplest approach may be to (1) read the data in as two arrays, one for keys and one for values; (2) sort the data in the values array; and then (3) print out the contents of each array, one element from each per line. For example:
#! perl use strict; use warnings; my (@keys, @vals); while (<DATA>) { my ($key, $val) = /^(.*?\S)(\s.*)$/s; push @keys, $key; push @vals, $val; } @vals = sort { mysort() } @vals; while (@keys) { my $key = shift @keys; my $val = shift @vals; print $key, $val; } sub mysort { my ($aa) = $a =~ /^\s*(\d+)/; my ($bb) = $b =~ /^\s*(\d+)/; return $aa <=> $bb; } __DATA__ 1014 1 10 1015 51 100 1016 11 50 1017 101 -
Output:
12:53 >perl 1568_SoPW.pl 1014 1 10 1015 11 50 1016 51 100 1017 101 - 12:54 >
Hope that helps,
| Athanasius <°(((>< contra mundum | Iustus alius egestas vitae, eros Piratica, |
In reply to Re: Sorting a matrix based on the values of columns
by Athanasius
in thread Sorting a matrix based on the values of columns
by raghuprasad241
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |