Posted to tcl by mjanssen at Thu Oct 25 00:37:15 GMT 2007view pretty
set re {^$}
fconfigure stdout -encoding binary -translation binary -buffering full
proc filter {argv re} {
foreach file $argv {
set f [open $file r]
fconfigure $f -encoding binary -translation binary -buffersize 8096
set buffer ""
while {![eof $f]} {
while {[string first \n $buffer] == -1} {
append buffer [read $f 8096]
}
set bl [split $buffer \n]
foreach line [lrange $bl 0 end-1] {
if {[regexp -- $re $line]} {puts $line}
}
set buffer [lindex $bl end]
}
close $f
}
}
filter $argv $re
Comments
Posted by willdye at Fri Oct 26 21:23:59 GMT 2007 [text] [code]
mcvoy noted on the Tcl Chat that this script is currently 3.6 times slower than the roughly equivalent Perl script: $re='^$'; while(<>){ print if /$re/0;}