Hallo.
Was ist mit diesem TCL ? Könnts damit funktionieren?
Ja:
-
Tcl unter http://www.activestate.com/Products/ActiveTcl/
herunterladen -
folgenden Code in einer Datei sps-parser.tcl abspeichern
-
per ‚tclsh sps-parser.tcl gesuchte_record_id gesuchter_parametername dateiname‘ ausführen
Aufrufbeispiele :
$ tclsh sps-parser.tcl PUNKT X sps-daten.txt
PUNKT 4 X 502.8781
$ tclsh sps-parser.tcl KREIS D sps-daten.txt
KREIS 2 D 12.5861
KREIS 3 D 21.1681
Code :
if {$argc != 3} {
puts "Syntax: tclsh sps-parser.tcl gesuchte\_record\_id gesuchter\_parametername dateiname"
exit
}
proc istLeerzeile { zeile } {
return [regexp {^\s\*$} $zeile]
}
set gesuchte\_record\_id [lindex $argv 0]
set gesuchter\_parametername [lindex $argv 1]
set dateiname [lindex $argv 2]
set datei [open $dateiname r]
set aktuelle\_record\_id ""
# durchsuche jede Zeile der Datei:
while {[gets $datei zeile] \>= 0} {
if {[istLeerzeile $zeile]} {
set aktuelle\_record\_id ""
continue
}
# untersuche nicht-leere Datenzeile:
if { $aktuelle\_record\_id eq "" } {
# neuen Record gefunden:
set lstFelder [split $zeile " "]
set datensatznummer [lindex $lstFelder 0]
set aktuelle\_record\_id [lindex $lstFelder 1]
}
# suche im Record nach dem gewünschten Parameter:
if { ($aktuelle\_record\_id eq $gesuchte\_record\_id) &&
[regexp "${gesuchter\_parametername}\\s+(\[^\\s\]+)" $zeile gesamttreffer parameterwert] } {
puts "$aktuelle\_record\_id $datensatznummer $gesuchter\_parametername $parameterwert"
}
}
TCL ist zu kompliziert bei Stringverarbeitung (für mich).
Es ist nicht ganz so kompakt programmierbar wie Perl,
dafür aber deutlich lesbarer und damit sowohl anfänger-
als auch wartungsfreundlicher, wie ich finde 
Gruß,
-Andreas.