matrix transpose [not invert] routine
John R. Levine
johnl at esegue.segue.boston.ma.us
Sat Nov 11 03:05:34 AEST 1989
In article <1612 at xn.LL.MIT.EDU> rkc at XN.LL.MIT.EDU (rkc) writes:
>I have "spreadsheet-like" data that looks like this:
> a1 b1 c1
> a2 b2 c2
> a3 b3 c3
>and I want to get it in a form like:
> a1 a2 a3
> b1 b2 b3
> c1 c2 c3
There are lots of ways to do it. My favorite, which works for arbitrarily
large arrays, is to label each datum and sort them:
awk '{ for(i = 1; i <= NF; i++) # lines of form "row col datum"
print NR,i,$i
}' |
sort +1n +0n | # sort by columns
awk '$2 != lineno {
if(line != "")
print line
lineno = $2
line = $3
next
}
$2 == lineno { line = line " " $3 }
END { print line }'
--
John R. Levine, Segue Software, POB 349, Cambridge MA 02238, +1 617 864 9650
johnl at esegue.segue.boston.ma.us, {ima|lotus|spdcc}!esegue!johnl
Massachusetts has over 100,000 unlicensed drivers. -The Globe
More information about the Comp.unix.questions
mailing list