Thread Komplexer sort (natürliche Sortierung) (13 answers)
Opened by Student87 at 2012-11-23 17:10

Linuxer
 2012-11-29 12:35
#163734 #163734
User since
2006-01-27
3891 Artikel
HausmeisterIn

user image
Kleine Modifikation:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#! /usr/bin/perl
use strict;
use warnings;

# use Getopt::Long;
# use CGI;

my @list = qw(

 chr10
 chr10
 chr10
 chr10
 chrY
 chrY
 chrY
 chr1
 chr1
 chr1
 chrX
 chrX
 chrX
 chrX
 chr2
 chr2
 chr2

);

my @sorted = sort {

    my ( $strA, $numA ) = $a =~ m/(\D+)(\d+)?/;
    my ( $strB, $numB ) = $b =~ m/(\D+)(\d+)?/;

    if ( defined $numA && defined $numB ) {
        $strA cmp $strB || $numA <=> $numB
    }
    else {
        $strA cmp $strB
    }
} @list;


print join "\n", @sorted;


__END__


Liefert mir:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
chr1
chr1
chr1
chr2
chr2
chr2
chr10
chr10
chr10
chr10
chrX
chrX
chrX
chrX
chrY
chrY
chrY
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread Komplexer sort (natürliche Sortierung)