Thread shell Befehl umsetzen (13 answers)
Opened by wenze at 2018-05-22 11:14

haj
 2018-05-22 19:59
#188428 #188428
User since
2015-01-07
437 articles
BenutzerIn

user image
Ah, danke für den Link - das steckt also dahinter... mit SAP habe ich nix am Hut. Es ist also kaum damit zu rechnen, dass die Dateien ein paar GB groß sind.

Ich habe das auch wieder getestet und kann mich wieder nicht zurückhalten:

  • Der split m{\s[*]=\s[*]}, $line  nimmt das "Newline" am Ende der Zeile in den Hostnamen mit, das ist möglicherweise unerwünscht.
  • In der Annahme, dass Profildateien komplett in den Speicher passen, läßt sich die gesamte Auswahl-Operation mit Perl's map abwickeln.


Die FILE-Schleife sieht dann so aus:
Code (perl): (dl )
1
2
3
4
5
6
7
    FILE:
    for my $file ( @files ) {
        open my $fh, '<', $file or die "open($file,ro) failed: $!";
        push @dbhosts,
            map { /$search\s*=\s*(\S+)/i && ! $seen{$1}++ ? ($1) : () } <$fh>;
        close $fh;
    }


Wenn auch Shell/C/Java-Programmierer das Programm lesen sollen, würde ich sowas nicht empfehlen, aber in der Perl-Welt sind map (und grep) ganz gängige Idiome.

View full thread shell Befehl umsetzen