xref: /sqlite-3.40.0/tool/replace.tcl (revision 8d463ce1)
1946ef60aSmistachkin#!/usr/bin/tcl
2946ef60aSmistachkin#
3946ef60aSmistachkin# Replace string with another string -OR- include
4946ef60aSmistachkin# only lines successfully modified with a regular
5946ef60aSmistachkin# expression.
6946ef60aSmistachkin#
73dffcf91Smistachkinfconfigure stdout -translation binary -encoding binary
83dffcf91Smistachkinfconfigure stderr -translation binary -encoding binary
9946ef60aSmistachkinset mode [string tolower [lindex $argv 0]]
10946ef60aSmistachkinset from [lindex $argv 1]
11946ef60aSmistachkinset to [lindex $argv 2]
12*8d463ce1Slarrybrif {-1 == [lsearch -exact [list exact regsub include] $mode]} {exit 1}
13946ef60aSmistachkinif {[string length $from]==0} {exit 2}
14946ef60aSmistachkinwhile {![eof stdin]} {
15946ef60aSmistachkin  set line [gets stdin]
16946ef60aSmistachkin  if {[eof stdin]} break
17946ef60aSmistachkin  switch -exact $mode {
18946ef60aSmistachkin    exact {set line [string map [list $from $to] $line]}
1952b1dbb5Smistachkin    regsub {regsub -all -- $from $line $to line}
20946ef60aSmistachkin    include {if {[regsub -all -- $from $line $to line]==0} continue}
21946ef60aSmistachkin  }
22946ef60aSmistachkin  puts stdout $line
23946ef60aSmistachkin}
24