string - Right format to use sed in expect(TCL) exec involking? -
linux expect snippet :
set info "ip address 2.2.2.2 mask x\n" set old_internet_ip "2.2.2.2" set new_internet_ip "1.1.1.1" set newinfo [exec echo $info | sed '{s/${old_internet_ip}/${old_internet_ip}/}'] send_user $info send_user $newinfo what trying replace 2.2.2.2 in info 1.1.1.1 , set newinfo.
after hard trying in different format, line set newinfo [exec echo $info | sed '{s/${old_internet_ip}/${old_internet_ip}/}'] not working.
can give hand? give thanks you.
edit: s/${old_internet_ip}/${old_internet_ip}/ above careless mistake, should be: s/${old_internet_ip}/${new_internet_ip}/
% set newinfo [exec echo $info | sed '{s/${old_internet_ip}/${old_internet_ip}/}'] sed: -e look #1, char 1: unknown command: `''
first, single quotes have absolutely no special meaning in tcl, remove them. quoting characters in tcl double quotes , braces. second, want substitute variables, can't utilize braces. replace braces double quotes. third, you're replacing old value old value. meant:
% set newinfo [exec echo $info | sed "s/${old_internet_ip}/${new_internet_ip}/"] ip address 1.1.1.1 mask x next, can remove echo passing tcl variable sed via stdin (ref):
% set newinfo [exec sed "s/${old_internet_ip}/${new_internet_ip}/" << $info] ip address 1.1.1.1 mask x last, don't need exec out sed @ all:
% set newinfo [string map [list $old_internet_ip $new_internet_ip] $info] ip address 1.1.1.1 mask x ref
string replace sed tcl expect
No comments:
Post a Comment