Thread bisherige Skriptausgabe soll zusammengeführt werden (12 answers)
Opened by choff at 2011-10-05 18:14

payx
 2011-10-06 11:08
#152902 #152902
User since
2006-05-04
564 Artikel
BenutzerIn

user image
Hallo choff,

hier ein Script, das ungefähr das tut, was Du vermutlich willst:

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
#!/usr/bin/perl

use strict;
use warnings;

my %elements; # HOH key = ElementId, value = Hashref gemergeter Datensatz

# Arrays für die Werte in je einer Zeile
my @keys;
my @values;

# Daten einlesen und HoH befüllen
while (my $row = <DATA>) {

    chomp $row;
    
    if ($row =~ m/ElementID/) { # eine Key-Zeile
        @keys = split(/\|/, $row);
        @values = (); # neue Key-Zeile, daher Values löschen
    } elsif ($row =~ /\|/) { # eine Value-Zeile
        @values = split(/\|/, $row);        
    } else { # eine leere Zeile
        next;
    }
    
    if (@keys and @values) {
        die "Ungleiche Anzahl keys und values!" unless scalar @keys == scalar @values;
        my %entry;
        for my $i (0..$#keys) { # temporärer Hash, weil Id noch nicht bekannt
            $entry{$keys[$i]}=$values[$i];
        }
        @keys = (); # Die Arrays leeren für den nächsten Datensatz
        @values = ();
        die "Keine ElementID!" unless my $id = $entry{'ElementID'};
        for my $key (keys %entry) { # Hashref auffüllen
            $elements{$id}->{$key}=$entry{$key};
        }
    }
}

# Ausgabe Ergebnis:
for my $elementId (keys %elements) { 
    
    my %entry = %{$elements{$elementId}}; # Hashref dereferenzieren
    
    print join("|", keys %entry) . "\n";
    print join("|", values %entry) . "\n";

}

__DATA__
CreationClassName|ElementName|ElementID|OnTimeInMilliseconds
Msvm_ComputerSystem|DevManage|0454C4E6-2C92-41C1-A5FD-D9F145D798D4|1051510957

CreationClassName|DeviceID|LoadPercentage|SystemCreationClassName|ElementID
Msvm_Processor|Microsoft:b637f346-6a0e-4dec-af52-bd70cb80a21d\0|0|Msvm_ComputerSystem|0454C4E6-2C92-41C1-A5FD-D9F145D798D4


Sicher nicht maximal elegant ...

HTH
Grüße
payx

View full thread bisherige Skriptausgabe soll zusammengeführt werden