In Textfiles/Zeilen Zeichen ersetzen/aufbereiten.
Nehmen wir als Beispiel ein Unload-File, das mehrere DTAUS-Dateien beinhaltet, durch Zeilenende-Zeichen getrennt. Ein zusätzliches '|'-Trennzeichen am Ende jeder Zeile (z.B. von dbaccess als Feldtrenner beim Unload hinzugefügt).
Bevor die DTAUS-Dateien nach dem Entladen aus der DB bearbeitet werden können, müssen diese aufbereitet werden, beispielsweise wie folgt:
All diese Aufgaben erledigt folgendes perl-Aufruf:
/usr/bin/perl -e 'while( <STDIN> ) { chomp ; $outBuf = $_ ; $outBuf =~ s/\\\\/ /g; $outBuf =~ s/\\\|/ /g; $outBuf =~ s/[^ A-Za-z0-9\.\,\-\+\*\%\/\$\&]/ /g; $outBuf =~ s/ $/|/g; $outBuf = uc($outBuf); print STDOUT "$outBuf\n"; }' < ${INPUT_UNLOADS_DTAUS_FILES} 1>${OUTPUT_DTAUS_FILE} 2>${OUTPUT_ERROR_MELDUNGEN}
Erläuterung:
$outBuf = $_ ;
liest eine Zeile aus dem Input-Stream <STDIN>
$outBuf =~ s/\\\\/ /g;
und $outBuf =~ s/\\\|/ /g;
ersetzen das doppelte '\'-Zeichen ('\\') bzw. das escaped '|'-Zeichen ('\|') durch Blanks$outBuf =~ s/[^ A-Za-z0-9\.\,\-\+\*\%\/\$\&]/ /g;
ersetzt alle Zeichen, die in diesem Kommando nicht erwähnt sind (Invertierung durch das '^'-Zeichen vorne) durch Blanks$outBuf =~ s/ $/|/g;
fügt am Ende jeder Zeile wieder ein '|'-Zeichen hinzu$outBuf = uc($outBuf);
konvertiert alle Kleinbuchstaben zu Großbuchstabenprint STDOUT "$outBuf\n";
schreibt die fertige Zeile gefolgt vom Zeilentrenner auf 'stdout' rausStand: 01.04.2011
EOF