Numeric sort error


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Numeric sort error
# 1  
Old 06-08-2009
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
200707,9580,58,7,2,1,PRI,1,1,138,204173,0,5,10,-58.51,-58.51
200707,9580,58,7,2,1,SEC,1,1,138,204173,0,5,10,-58.51,58.51
200707,9580,58,7,2,1,PRI,1,1,139,170842,0,5,10,-25.98,-25.98
200707,9580,58,7,2,1,SEC,1,1,139,170842,0,5,10,-25.98,25.98

When i did sort on the above data using the below command:
sort -n -t',' +0 -1 +1 -2 +2 -3 +3 -4 +4 -5 +5 -6 +6 -7 +7 -8 +8 -9 +9 -10 +10 -11

Result is like:

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
200707,9580,58,7,2,1,PRI,1,1,138,204173,0,5,10,-58.51,-58.51
200707,9580,58,7,2,1,SEC,1,1,138,204173,0,5,10,-58.51,58.51
200707,9580,58,7,2,1,PRI,1,1,139,170842,0,5,10,-25.98,-25.98
200707,9580,58,7,2,1,SEC,1,1,139,170842,0,5,10,-25.98,25.98

If you check the data, sort is screwed up, 3rd row should come before second and PRI is lesser than SEC.

But when i sort the same data using the below command

sort -t',' +0 -1n +1 -2n +2 -3n +3 -4n +4 -5n +5 -6n +6 -7 +7 -8n +8 -9n +9 -10n
I made each field numeric specfic and PRI, SEC field left as Ascii

I got the below result which the right one

200707,9580,58,7,2,1,PRI,1,1,137,205594,0,5,10,-45.51,-45.51
200707,9580,58,7,2,1,PRI,1,1,138,204173,0,5,10,-58.51,-58.51
200707,9580,58,7,2,1,PRI,1,1,139,170842,0,5,10,-25.98,-25.98
200707,9580,58,7,2,1,SEC,1,1,137,205594,0,5,10,-45.51,45.51
200707,9580,58,7,2,1,SEC,1,1,138,204173,0,5,10,-58.51,58.51
200707,9580,58,7,2,1,SEC,1,1,139,170842,0,5,10,-25.98,25.98

When i am sorting either numeric or ascii, why the PRI, SEC is making a difference?
# 2  
Old 06-08-2009
Not so clear

Dera friend, I've also encountered the same problems in the past. I'm using the "n" qualifier for numeric fields to avoid such problems. Your example, though, has a dark point: you want numerical sort (-n) but there are non-numeric fields in the sort. Look the -k option too. Not helped a lot but it's nice to find someone to hear.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

Sort by second column numeric values

From googling and reading man pages I figured out this sorts the first column by numeric values. 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... (7 Replies)
Discussion started by: cokedude
7 Replies

2. 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

3. Shell Programming and Scripting

[Solved] sort on numeric part of field

I have ran into a heavy case of PEBCAK*) and could need some advice on what i do wrong: OS is Linux (kernel 2.6.35), sort --version reports "8.5" from 2010, shell is ksh. Originally i had a file with with the following structure: hdisk1 yyy hdisk2 yyy hdisk3 yyy hdisk4 yyy hdisk5 yyy... (2 Replies)
Discussion started by: bakunin
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

Perl script to sort data on second numeric field

Hi, I'm a learner of PERL programming. I've a input file with the below data: SWAT_5, 1703, 2010-09-21 SWAT_6, 2345, 2010-09-21 SWAT_7, 1792, 2010-09-21 SWAT_8, 1662, 2010-09-21 SWAT_9, 1888, 2010-09-21 VXHARP_1, 171, 2010-09-21 I need to sort this data based on the second... (6 Replies)
Discussion started by: ganapati
6 Replies

8. Linux

Using sort command to get numeric ascending order

HI everyone, I am trying to use the unix sort command to get a list of numbers sorted in ascending order but having trouble in getting it to work. An example of this issue would be when i am trying to sort the following three number each on a different line "1" , "2" and "116" the sort command... (3 Replies)
Discussion started by: wali4813
3 Replies

9. Shell Programming and Scripting

help newb at linux and bash need numeric script sort

I am trying to setup to automatically import a series of mysql database files. I am doing manually now and its a royal pain. All the sql files are sequentially numbered in a format of 4 numbers underscore text with spaces replaced by underscores. example: There are 3 databases each setup... (1 Reply)
Discussion started by: dlm1065
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