ASCII File auslesen und gewisse Zeichen sichern

Hallo.

Was ist mit diesem TCL ? Könnts damit funktionieren?

Ja:

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 :wink:

Gruß,
-Andreas.