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