the problem is it doenst just sort on the column you specifiy its that column and onwards, im assuming for you column 2 all look the same , else you would have noticed it was sorting on that as well as column 3, i suggest using -a heres a sample script..

filter -wwa @in @out column.1.sorter *

alias column.1.sorter {
var %v1,%v2
%v1 = $gettok($1,1,32)
%v2 = $gettok($2,1,32)
$iif(%v1 == %v2,return 0)
return $iif(%v1 < %v2,-1,1)
}

This well give you a sorted list based just on the column (tok)number you select in the $gettok , change the token seperator if its not space (32).

As a note, it appears to leave the order of the entries the same ecept for the column you have sorted on, ie if u had

b x 9
c x 3
c x 4
b x 6
c x 1

you end up with

b x 9
b x 6
c x 3
c x 4
c x 1

but i have watched how it sorts them, its not using a bubble sort (which would be real slow) loooks like a divisiopn by two sort, with insertion rather than swaping high and lower values, so saying this....
I would not always count on the other columns to remain in the order they appeared pre sort, it might be the case but it might not be.