Thread csv-Dateien parsen
(14 answers)
Opened by cohama at 2014-03-11 08:55 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 |