Fix a problem allowing a LIMIT constraint to be passed to a virtual table in cases...
[sqlite.git] / tool / replace.tcl
blobe87cb922f2a7a494fb211e6a92d107459e11b3bf
1 #!/usr/bin/tcl
3 # Replace string with another string -OR- include
4 # only lines successfully modified with a regular
5 # expression.
7 fconfigure stdout -translation binary -encoding binary
8 fconfigure stderr -translation binary -encoding binary
9 set mode [string tolower [lindex $argv 0]]
10 set from [lindex $argv 1]
11 set to [lindex $argv 2]
12 if {-1 == [lsearch -exact [list exact regsub include] $mode]} {exit 1}
13 if {[string length $from]==0} {exit 2}
14 while {![eof stdin]} {
15 set line [gets stdin]
16 if {[eof stdin]} break
17 switch -exact $mode {
18 exact {set line [string map [list $from $to] $line]}
19 regsub {regsub -all -- $from $line $to line}
20 include {if {[regsub -all -- $from $line $to line]==0} continue}
22 puts stdout $line