Thread Liste in Tabellenformat umwandeln
(19 answers)
Opened by Rambo at 2016-06-24 15:19
Hi,
hier ein Vorschlag, wie man die Daten strukturiert einlesen könnte: 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 # ArrayReferenz = get_datasets( FileHandle) sub get_datasets { my $handle = shift; my @datasets; # read blockwise; separate at double newline local $/ = "\n\n"; while ( my $dataset = <$handle> ) { # remove double newline from dataset chomp $dataset; # first split by newline, then at the first ':' # identifiers must not contain ':' themselves # store splitted fields in a new hash my %set = map { split m{\s*:\s*}, $_, 2 } split( m{\n}, $dataset ); # store reference to new hash in array push @datasets, \%set; } # return array reference return \@datasets; } damit erhält man eine Struktur: Code: (dl
)
1 @datasets = ( Diese Struktur kann man dann hernehmen, um damit eine Ausgabe zu befüllen. Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... my @fields = qw( SamAccountName ExpiryDate PasswordLastSet mail ); my $format = "%-25s %-25s %-25s %-25s\n"; # header fields printf $format, @fields; # underline header fields (same length as header fields printf $format, map { '-' x length $_ } @fields; my $datasets = get_datasets( $handle ); for my $set ( @$datasets ) { my %h = %$set; printf $format, @h{@fields}; } Code: (dl
)
1 SamAccountName ExpiryDate PasswordLastSet mail Die Fragmente musst Du nur noch zusammenbauen und das Format der Ausgabe Deinen Wünschen anpassen ;-) PS/Edit: Wichtig ist, dass die Eingabedatei richtig formatiert ist und die korrekten Zeilenumbrüche hat. Wenn das SKript auf einem Windows ausgeführt wird, sollte die Eingabedatei auch Windows-Zeilenumbrüche nutzen. Wenn es auf einem Linux läuft, sollten es Linux-Zeilenumbrüche sein... Edit2: Code und Ausgabe angepasst. Last edited: 2016-06-24 16:18:06 +0200 (CEST) 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! |