Sort numerically a non numerical


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Sort numerically a non numerical
# 1  
Old 04-26-2010
Sort numerically a non numerical

Hello,
I have this sample data:
Code:
01 * * * *
01 * * * *
01 * * * *
01 * * * *
01 0 * * *
01 0 * * *
01 0 * * *
01 0 * * *
02 * * * 0
02 * * * 0
02 * * * 6
02 * * * 6
02 0 * * 1
02 0 * * 1
02 0 * * 2
02 0 * * 2
02 0 * * 3
02 0 * * 3
02 0 * * 4
02 0 * * 4
02 0 * * 5
06 0 * * *
06 0 * * *
11 * * * *
11 * * * *
11 0 * * *
11 0 * * *
12 0 * * 0
12 0 * * 0
12 0 * * 1
12 0 * * 1
12 0 * * 2
12 0 * * 2
12 0 * * 3
12 0 * * 3
12 0 * * 4
12 0 * * 4
12 0 * * 5
12 0 * * 5
12 0 * * 6
12 0 * * 6
15 0 * * 1
15 0 * * 1
15 0 * * 2
15 0 * * 2
15 0 * * 3
15 0 * * 3
15 0 * * 4
15 0 * * 4
15 0 * * 5
15 0 * * 5
16 0 * * *
16 0 * * *
21 * * * *
21 0 * * *
31 * * * *
41 * * * *
51 * * * *
52 * * * *
55 * * * *
58 * * * *
02 1 * * 1
02 1 * * 2
02 1 * * 3
02 1 * * 5
04 1 * * *
12 1 * * 0
12 1 * * 1
02 06 * * 5
02 6 * * 4

how can I sort these entries so that field 2 will be sorted with "*" first followed by numbers where 6 and 06 fill follow each other?
When I try :
Code:
sort -nb -k 2,2

the data is sorted numerically yet the field 2 with "*" are not all grouped together.
If I try
Code:
sort -k 2,2

then all the "*" in field 2 are properly grouped but 06 and 6 are considered different.
Can you help?
Thanks.
# 2  
Old 04-26-2010
It would help if you put the OS you are working with.

One option I found was -g

-g, --general-numeric-sort
compare according to general numerical value

But, you may not have that in your OS sort ...
# 3  
Old 04-26-2010
AIX 5.3 using ksh88
# 4  
Old 04-26-2010
Perl will do that. There is a '06' vs '0' and '6' in your data. The code below sorts the '06' with the '0' and not the '6' but this is easily changed.

Code:
#!/usr/bin/perl

while(<DATA>) {
   chomp;
   push @a, [split];
}

for $ref ( sort { ord($a->[1]) <=> ord($b->[1]) } @a) {
	print "@$ref\n";
}

__DATA__
01 * * * *
01 * * * *
01 * * * *
01 * * * *
01 0 * * *
01 0 * * *
01 0 * * *
01 0 * * *
02 * * * 0
02 * * * 0
02 * * * 6
02 * * * 6
02 0 * * 1
02 0 * * 1
02 0 * * 2
02 0 * * 2
02 0 * * 3
02 0 * * 3
02 0 * * 4
02 0 * * 4
02 0 * * 5
06 0 * * *
06 0 * * *
11 * * * *
11 * * * *
11 0 * * *
11 0 * * *
12 0 * * 0
12 0 * * 0
12 0 * * 1
12 0 * * 1
12 0 * * 2
12 0 * * 2
12 0 * * 3
12 0 * * 3
12 0 * * 4
12 0 * * 4
12 0 * * 5
12 0 * * 5
12 0 * * 6
12 0 * * 6
15 0 * * 1
15 0 * * 1
15 0 * * 2
15 0 * * 2
15 0 * * 3
15 0 * * 3
15 0 * * 4
15 0 * * 4
15 0 * * 5
15 0 * * 5
16 0 * * *
16 0 * * *
21 * * * *
21 0 * * *
31 * * * *
41 * * * *
51 * * * *
52 * * * *
55 * * * *
58 * * * *
02 1 * * 1
02 1 * * 2
02 1 * * 3
02 1 * * 5
04 1 * * *
12 1 * * 0
12 1 * * 1
02 06 * * 5
02 6 * * 4

Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

How to sort files in directory numerically?

Trying to sort a bunch of files numerically but can't seem to get the command just right. This is in a IBM AIX machine. I have a directory that has... backup.bk1 backup.bk100 backup.bk2 backup.bk200 backup.bk3 backup.bk300 There are a lot more files but this is shortened for the... (5 Replies)
Discussion started by: c3rb3rus
5 Replies

2. Shell Programming and Scripting

Use sort to sort numerical column

How to sort the following output based on lowest to highest BE? The following sort does not work. $ sort -t. -k1,1n -k2,2n bfd.txt BE31.116 0s 0s DOWN DAMP BE31.116 0s 0s DOWN DAMP BE31.117 0s 0s ... (7 Replies)
Discussion started by: sand1234
7 Replies

3. UNIX for Dummies Questions & Answers

[Solved] Reverse the order of a list of file names (but not sort them alphabetically or numerically)

Hello all, I have a list of file names in a text document where each file name consists of 4 letters and 3 numbers (for example MACR119). There are 48 file names in the document (they are not in alphabetical or numerical order). I would like to reorder the list of names so that the 48th name is... (3 Replies)
Discussion started by: MDeBiasse
3 Replies

4. UNIX for Dummies Questions & Answers

How to sort a column based on numerical ascending order if it includes e-10?

I have a column of numbers in the following format: 1.722e-05 2.018e-05 2.548e-05 2.747e-05 7.897e-05 4.016e-05 4.613e-05 4.613e-05 5.151e-05 5.151e-05 5.151e-05 6.1e-05 6.254e-05 7.04e-05 7.12e-05 7.12e-05 (6 Replies)
Discussion started by: evelibertine
6 Replies

5. Shell Programming and Scripting

Sort alphabetically, then numerically

Greetings - I'm not necessarily new to bash scripting - I'm probably between beginner and intermediate, but I have something that I just cannot figure out after many attempts to find it. I have a file that is merely a list of many files, with their respective paths, and a branch path (ClearCase)... (5 Replies)
Discussion started by: 1cor29
5 Replies

6. UNIX for Dummies Questions & Answers

Sort 2 columns numerically

Hi, A basic query. In the example file below, I want to sort by column 1 and then by column 2 numerically. I have tried sort -k2n,1 file1 but while this sorts the columns in the correct order, it does not sort column 2 numerically. Any help would be much appreciated. Also, if you have time to... (3 Replies)
Discussion started by: auburn
3 Replies

7. Shell Programming and Scripting

script to sort a string of numerical data in set fields

So, I will be working with someone and basically we are trying to build a form that is submitted most likely via the web and the data is just a string of numbers. like: 19383882872201110929282821818182827349190102837364718191001932873711 Now, each number is part of a numerical value of... (4 Replies)
Discussion started by: tlarkin
4 Replies

8. Shell Programming and Scripting

Numerically sort problem for a long list of file name

I got a long list of file name. My input: data_1.txt data_2.txt data_3.txt data_10.txt data_21.txt data_12.txt data_4.txt My desired output: data_1.txt data_2.txt data_3.txt data_4.txt data_10.txt data_12.txt data_21.txt Does anybody got idea how to archive it? (11 Replies)
Discussion started by: patrick87
11 Replies

9. UNIX for Dummies Questions & Answers

Sort file alphabetically AND numerically

Hi all. I have 2 files like this: f1 A 10 B 80 C 9 f2 A 11 B 700 C 10 What I want is the concatenation of the two files sorted by name (alphabetically) and size (numerically), so the result should be like this: F3 (cat f1 f2 sorted) A 10 A 11 B 80 B 700 (2 Replies)
Discussion started by: mrodrig
2 Replies
Login or Register to Ask a Question