if 0 {
Richard Suchenwirth 2003-10-23 - I needed this tiny code to do regular expression substitution in files "in place" - the alternative would have been to fumble with Perl :(.
The code should be self-explanatory - maybe others can use this too. For use as a shell script, remove the space before #! in the first line and chmod +x. }
#!/usr/bin/env tclsh
proc fsub {re subst filename} {
set fp [open $filename]
set data [read $fp]
close $fp
set n [regsub -all $re $data $subst data]
set fp [open $filename w]
puts -nonewline $fp $data
close $fp
set n
}
# This allows to execute this file as a shell script:
if {[file tail [info script]] eq [file tail $argv0]} {
if {$argv == ""} {
puts "usage: fsub re subst file...
substitute the regular expression 're' with 'subst'
in all specified files"
} else {
foreach {re subst} $argv break
foreach file [lrange $argv 2 end] {
set n [fsub $re $subst $file]
puts "$file : $n"
}
}
}