Thread csv-Dateien parsen (14 answers)
Opened by cohama at 2014-03-11 08:55

GwenDragon
 2014-03-11 12:51
#173991 #173991
User since
2005-01-17
14761 Artikel
Admin1
[Homepage]
user image
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
use Modern::Perl;

my %data;
while (<DATA>) {
        chomp; # newline entfernen
        my ($k, $v1, $v2) = split /;/;  # splitte Datensatz
        
        $data{$k} //= [ $v1, $v2//0 ];  # Datenarray setzen falls noch nicht existent
        
        $data{$k}->[0] = $v1 
                if $v1 < $data{$k}->[0];        # setze Minimum aus erstem Wert
        $data{$k}->[1] = $v2 
                if length $v2 
                && $v2 gt $data{$k}->[1];       # setze Maximum aus zweitem Wert
        
        $data{$k}->[0] = $v2 
                if length $v2 
                && $v2 lt $data{$k}->[0];       # setze Minimum aus zweitem Wert
        $data{$k}->[1] = $v1 
                if length $v1 
                && $v1 gt $data{$k}->[1];       # setze Maximum aus erstem Wert
}

# Daten wieder ausgeben
say 
        join ";",$_,@{$data{$_}} 
        for 
        sort                            
        keys %data;                     

__DATA__
201;215388;
201;48639860;48639869
201;48639870;48639879
201;48639880;48639889
201;48639890;48639899
201;5589000;
201;55890010;55890019
201;55890020;55890029
201;55890100;55890149
201;5589026;
201;5589027;
201;5589028;
201;5589029;
201;55891000;55891999
201;5589219;
201;5589400;
201;5589401;
203;7329283;
203;73297000;73297399
203;7329789;
203;7329900;
203;7329911;
203;7329922;
203;7329988;
2041;7549009;
2041;7549010;
2041;7549011;
2041;7549012;
2041;7549013;
2041;7549014;
2041;7549015;
2041;7549016;
2041;7549017;
2041;7549018;
2041;7549019;
2041;7549027;
2041;7549028;
2041;7549029;
2043;9829006;
2043;9829007;
2043;9829008;
2043;9829009;
2043;9829019;
2043;9829029;


ergibt:
201;215388;5589401
203;7329283;7329988
2041;7549009;7549029
2043;9829006;9829029

View full thread csv-Dateien parsen