====== 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