File: replace.tcl

package info (click to toggle)
sqlite3 3.46.1-7
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 150,660 kB
  • sloc: ansic: 281,304; tcl: 19,550; javascript: 12,978; sh: 10,768; java: 8,151; makefile: 1,690; yacc: 1,644; cpp: 440; cs: 307; sql: 45
file content (23 lines) | stat: -rw-r--r-- 743 bytes parent folder | download | duplicates (15)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/tcl
#
# Replace string with another string -OR- include
# only lines successfully modified with a regular
# expression.
#
fconfigure stdout -translation binary -encoding binary
fconfigure stderr -translation binary -encoding binary
set mode [string tolower [lindex $argv 0]]
set from [lindex $argv 1]
set to [lindex $argv 2]
if {-1 == [lsearch -exact [list exact regsub include] $mode]} {exit 1}
if {[string length $from]==0} {exit 2}
while {![eof stdin]} {
  set line [gets stdin]
  if {[eof stdin]} break
  switch -exact $mode {
    exact {set line [string map [list $from $to] $line]}
    regsub {regsub -all -- $from $line $to line}
    include {if {[regsub -all -- $from $line $to line]==0} continue}
  }
  puts stdout $line
}