Home » Questions » Computers [ Ask a new question ]

How to UNIX sort by one column only?

How to UNIX sort by one column only?

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:

Asked by: Guest | Views: 195
Total answers/comments: 2
Guest [Entry]

"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."
Guest [Entry]

"None of the provided answers work generally for me.

Both sort -s -k 2 file1 and sort -n -k1,1 do additional sorting with this file:

# cat file1
3 3 5
3 2 3
1 4 7
0 1 2
3 2 1

I just had to do this exact thing and ended up using a shell loop.
This solution might not work well on a very large file because the entire
file needs to be read for each unique value in the sorted column.

Here the file is sorted on column 2 only.

# awk '{print $2}' file1 | sort | uniq | while read index
do
awk -v var=$index '$2 == var { print $0}' file1
done
0 1 2
3 2 3
3 2 1
3 3 5
1 4 7"