|
|
Simulation des Awk durch ein Tcl-Script
Bei dem folgenden Programm handelt es sich um einen Exoten, der
eigentlich nicht so ganz in den Rahmen dieser Webseite passt. Vor allem
deshalb, weil dieses Skript in Tcl geschrieben ist. Allerdings ist es
insofern interessant, weil es das Verhalten von AWK in Tcl simuliert:
#!//usr/bin/tclsh
if { $argc < 1 } {
set file_name "stdin"
} else {
set file_name [lindex $argv 0]
}
if { $file_name != "stdin" } {
if {[ catch { open $file_name r } file ] } {
puts stderr "Cannot open $file: $file"
}
} else {
set file stdin
}
while { [ gets $file line ] >= 0 } {
# was hier innerhalb dieser Schleife steht,
entspricht dem Haupteil eines Awk-Skriptes
# also all das, was jeweils mit einer Zeile gemacht
wird.
#puts $line
} |
Einsichtiger ist vielleicht das nächste Skript, das auch die
Simulation des Awk zum Ziel hat.
Jedes Awk-Skript besteht aus drei Hauptteilen:
- BEGIN
Hier finden sich die Anweisungen, die vor der Abarbeitung der
Hauptschleife des Awk abearbeitet werden.
- Hauptschleife (Zeilenbearbeitung)
Anweisungsfolge, die die Bearbeitung der Zeilen definiert.
- END
Anweisungsfolge, die nach Abarbeitung aller Zeilen
bearbeitet wird.
#
imitating the behaviour of the awk
proc for_file { filename init_script line_script end_script } {
if { $filename != "stdin" } {
if {[ catch { open $filename r } file ] } {
puts stderr "Cannot open $file:
$file"
}
} else {
set file stdin
}
eval $init_script
while { [ gets $file line ] >= 0 } {
eval $line_script
}
eval $end_script
|
|
|