How to UNIX sort by one column only

sortingunix

I know that the -k option for the Unix sort allow us to sort by a specific column and all of the following. For instance, given the input file:

2 3
2 2
1 2
2 1
1 1

Using sort -n -k 1, I get an output sorted by the 1st column and then by the 2nd:

1 1
1 2
2 1
2 2
2 3

However, I want to keep the 2nd column ordering, like this:

1 2
1 1
2 3
2 2
2 1

Is this possible with the sort command?

Best Answer

Give this a try:

sort -s -n -k 1,1

The -s disables 'last-resort' sorting, which sorts on everything that wasn't part of a specified key.

The -k 1 doesn't actually mean "this field and all of the following" in the context of numeric sort, as you can see if you try to sort on the second column. You're merely seeing ties broken by going to the rest of the line. In general, however, you need to specify -k 1,1 to sort only on field one.

Related Question