gio001
1
Hello,
I have this sample 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
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 :
sort -nb -k 2,2
the data is sorted numerically yet the field 2 with "*" are not all grouped together.
If I try
sort -k 2,2
then all the "*" in field 2 are properly grouped but 06 and 6 are considered different.
Can you help?
Thanks.
RTM
2
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 ...
drewk
4
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.
#!/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