====== Zeilenfilter ====== 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: * Sonderzeichen, die vom dbaccess durch '\'-Zeichen "escaped" werden ('\' selbst und '|'), bereinigen; * Nicht DTAUS konforme Zeichen durch Blanks ersetzen; * Kleinbuchstaben zu Großbuchstaben konvertieren; All diese Aufgaben erledigt folgendes perl-Aufruf: /usr/bin/perl -e 'while( ) { 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: * Das Kommando **''$outBuf = $_ ;''** liest eine Zeile aus dem Input-Stream '''' * Kommandos **''$outBuf =~ s/\\\\/ /g;''** und **''$outBuf =~ s/\\\|/ /g;''** ersetzen das doppelte '\'-Zeichen ('\\') bzw. das escaped '|'-Zeichen ('\|') durch Blanks * Das Kommando **''$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 * Das Kommando **''$outBuf =~ s/ $/|/g;''** fügt am Ende jeder Zeile wieder ein '|'-Zeichen hinzu * Das Kommando **''$outBuf = uc($outBuf);''** konvertiert alle Kleinbuchstaben zu Großbuchstaben * Das Kommando **''print STDOUT "$outBuf\n";''** schreibt die fertige Zeile gefolgt vom Zeilentrenner auf 'stdout' raus ---- Stand: 01.04.2011 EOF