Sort by second column numeric values


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users Sort by second column numeric values
# 1  
Old 11-15-2015
Sort by second column numeric values

From googling and reading man pages I figured out this sorts the first column by numeric values.

Code:
sort -g -k 1,1

Why does the -n option not work? The man pages were a bit confusing.

And what if I want to sort the second column numerically? I haven't been able to figure that out. The file is separated by a comma if that matters.
# 2  
Old 11-15-2015
Wouldn't you think that it would make more sense to post a representative portion of the input file you want sorted, and an example of the wanted output as sorted?
# 3  
Old 11-15-2015
The standard way to perform an increasing numeric sort on the 2nd field in a comma separated file would be:
Code:
sort -t, -k2,2n file

And the -g option is an extension not mentioned by the standards.

As Aia said, if you don't show us a sample of the data you're trying to sort and the sorted output you're hoping to get from that sample, it is hard for us to guess at why sort -n isn't working for you. Especially since you haven't shown us a sort command using the -n option that isn't working for you.
# 4  
Old 11-15-2015
Quote:
Originally Posted by Don Cragun
The standard way to perform an increasing numeric sort on the 2nd field in a comma separated file would be:
Code:
sort -t, -k2,2n file

And the -g option is an extension not mentioned by the standards.

As Aia said, if you don't show us a sample of the data you're trying to sort and the sorted output you're hoping to get from that sample, it is hard for us to guess at why sort -n isn't working for you. Especially since you haven't shown us a sort command using the -n option that isn't working for you.
Ok here it is not sorting properly. 14 and several other numbers should not be as low as they are.

Code:
$ sort -n -k 1,1 medium.txt
0,11
7,5
21,9
23,7
30,2
39,3
57,3
58,1
61,5
71,7
72,3
85,6
14,13
19,10
20,11
31,18
34,14
38,11
39,14
50,15
50,18
51,20
54,13
67,18
100,14

# 5  
Old 11-15-2015
Quote:
Originally Posted by cokedude
Ok here it is not sorting properly. 14 and several other numbers should not be as low as they are.
Hi, cokedude

According to you how do you think it should be ordered?

Did you try Don's suggestion: sort -t, -k2,2n medium.txt
# 6  
Old 11-16-2015
Quote:
Originally Posted by Aia
Hi, cokedude

According to you how do you think it should be ordered?

Did you try Don's suggestion: sort -t, -k2,2n medium.txt
Yes.

Code:
$ sort -t, -k2,2n medium.txt
58,1
30,2
39,3
57,3
72,3
61,5
7,5
85,6
23,7
71,7
21,9
19,10
0,11
20,11
38,11
14,13
54,13
100,14
34,14
39,14
50,15
31,18
50,18
67,18
51,20

The -g option worked. Any idea why the -n option didn't work?

Code:
$ sort -n -k 1,1 medium.txt
0,11
7,5
21,9
23,7
30,2
39,3
57,3
58,1
61,5
71,7
72,3
85,6
14,13
19,10
20,11
31,18
34,14
38,11
39,14
50,15
50,18
51,20
54,13
67,18
100,14
$ sort -g -k 1,1 medium.txt
0,11
7,5
14,13
19,10
20,11
21,9
23,7
30,2
31,18
34,14
38,11
39,14
39,3
50,15
50,18
51,20
54,13
57,3
58,1
61,5
67,18
71,7
72,3
85,6
100,14

# 7  
Old 11-16-2015
I guess we clearly do not understand what you mean when you say:
Quote:
I want to sort the second column numerically ... ... ... The file is separated by a comma if that matters.
I suggested using sort -t, -k2,2n medium.txt
which you say produced the output:
Code:
58,1
30,2
39,3
57,3
72,3
61,5
7,5
85,6
23,7
71,7
21,9
19,10
0,11
20,11
38,11
14,13
54,13
100,14
34,14
39,14
50,15
31,18
50,18
67,18
51,20

which seems to be exactly what you requested (the second column is sorted with increasing numeric values from 1 to 20). If you meant that you wanted to sort the file with the 2nd field as a primary key and the 1st field as the secondary key with both fields sorted numerically, that could be done with any of the commands:
Code:
sort -t, -n -k2,2 -k1,1 file
sort -t, -k2,2n -k1,1n file
sort -nt, -k2,2 -k1,1 file

Instead you claim that the output:
Code:
0,11
7,5
14,13
19,10
20,11
21,9
23,7
30,2
31,18
34,14
38,11
39,14
39,3
50,15
50,18
51,20
54,13
57,3
58,1
61,5
67,18
71,7
72,3
85,6
100,14

is the output you want even though it seems to be sorted numerically on the 1st column; not the 2nd column as you requested???

Did we misunderstand what you meant when you said you wanted to sort the 2nd column numerically?

Did we misunderstand what you meant when you said the comma was your column separator?

What locale settings are you using for LC_NUMERIC and LC_COLLATE?

What operating system are you using?
This User Gave Thanks to Don Cragun For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Replace a numeric values in a certain column

Hi All, I am trying to replace a certain value from one place in a file . In the below file at position 35 I will have 8 I need to modify all 8 in that position to 7 I tried awk '{gsub("8","7",$35)}1' infile > outfile ----> not working sed -i 's/8/7'g' infile --- it is replacing all... (3 Replies)
Discussion started by: arunkumar_mca
3 Replies

2. Shell Programming and Scripting

Splitting the numeric vs alpha values in a column to distinct columns

How could i take an input file and split the numeric values from the alpha values (123 vs abc) to distinc columns, and if the source is blank to keep it blank (null) in both of the new columns: So if the source file had a column like: Value: |1 | |2.3| | | |No| I would... (7 Replies)
Discussion started by: driftlogic
7 Replies

3. Shell Programming and Scripting

Help with sort word and general numeric sort at the same time

Input file: 100%ABC2 3.44E-12 USA A2M%H02579 0E0 UK 100%ABC2 5.34E-8 UK 100%ABC2 3.25E-12 USA A2M%H02579 5E-45 UK Output file: 100%ABC2 3.44E-12 USA 100%ABC2 3.25E-12 USA 100%ABC2 5.34E-8 UK A2M%H02579 0E0 UK A2M%H02579 5E-45 UK Code try: sort -k1,1 -g -k2 -r input.txt... (2 Replies)
Discussion started by: perl_beginner
2 Replies

4. Shell Programming and Scripting

Sort numeric order

Hi I am using this cat substitutionFeats.txt | gawk '{$0=gensub(/\t/,"blabla",1);print}' | gawk '{print length, $0}' | sort -n | sort -r and the "sort -n" command doesn't work as expected: it leads to a wrong ordering: 64 Adjustable cuffs 64 Abrasion- 64 Abrasion pas 647 Sanitized 647... (4 Replies)
Discussion started by: louisJ
4 Replies

5. UNIX for Dummies Questions & Answers

sort files by numeric filename

dear all, i have .dat files named as: 34.dat 2.dat 16.dat 107.dat i would like to sort them by their filenames as: 2.dat 16.dat 34.dat 107.dat i have tried numerous combinations of sort and ls command (in vain) to obtain : 107.dat 16.dat 2.dat 34.dat (1 Reply)
Discussion started by: chen.xiao.po
1 Replies

6. Shell Programming and Scripting

Sort help on non numeric field

Hi, I am unable to sort data on the first field $cat t Jim,212121,Seattle Bill,404404,Seattle Steve,246810,Nevada Scott,212277,LosAngeles Jim,212121,Ohio sort -t"," -k1,2 t Bill,404404,Seattle Jim,212121,Ohio Jim,212121,Seattle Scott,212277,LosAngeles Steve,246810,Nevada (7 Replies)
Discussion started by: Shivdatta
7 Replies

7. Shell Programming and Scripting

print unique values of a column and sum up the corresponding values in next column

Hi All, I have a file which is having 3 columns as (string string integer) a b 1 x y 2 p k 5 y y 4 ..... ..... Question: I want get the unique value of column 2 in a sorted way(on column 2) and the sum of the 3rd column of the corresponding rows. e.g the above file should return the... (6 Replies)
Discussion started by: amigarus
6 Replies

8. Shell Programming and Scripting

How to sort values inside one column?

Hi, Could someone please help me with this? I have a text file that has fields seperated by comma. The last column in it has multiple values seperated by "|". I need to sort values in the last column seperated by pipe..is there any way I can do this through script? Sample text file - ... (7 Replies)
Discussion started by: sncoupons
7 Replies

9. Shell Programming and Scripting

Numeric sort error

Hello all I have data like below where the column with values (PRI, SEC ) is the char field and the rest are Numeric Fields. 200707,9580,58,7,2,1,PRI,1,1,137,205594,0,5,10,-45.51,-45.51 200707,9580,58,7,2,1,SEC,1,1,137,205594,0,5,10,-45.51,45.51... (1 Reply)
Discussion started by: vasuarjula
1 Replies

10. Shell Programming and Scripting

how to numeric sort on field time

i want to sort time field given by who command as a whole i have tried like this who|sort -n +4 -5 (1 Reply)
Discussion started by: rahulspatil_111
1 Replies
Login or Register to Ask a Question