使用sed替换文件内容时遭遇“未终止替换正则表达式”错误求助
搞定sed的"unterminated substitute"错误~
兄弟,我来帮你分析解决这个问题:
为啥会报错?
你的sed命令里有两个坑:
- 正则点号没转义:
x.x.x.x里的.在sed正则里是通配符,能匹配任意单个字符,不是你想替换的字面量点号,这会导致sed解析模式时出问题。 - 引号用法不对:你用单引号把sed表达式拆成了两段,虽然变量能被解析,但这种写法很容易让shell对命令的解析出现偏差,直接触发“unterminated substitute”(替换命令未结束)的错误。
直接上正确命令
方案1:转义点号+双引号包裹
把模式里的.转成\.,再用双引号把整个sed命令包起来,确保变量正常解析:
sed "s/x\.x\.x\.x/$bigip_management_ip/g" temp.tt >> variables.tf
方案2:用固定字符串匹配(不用转义)
要是嫌转义麻烦,直接加-F选项让sed把模式当纯字符串处理,省得管正则:
sed -F "s/x.x.x.x/$bigip_management_ip/g" temp.tt >> variables.tf
执行后效果
跑上面任意一个命令,你的variables.tf就会变成:
variable "bigip_management_ip" { default = "54.83.174.153" }
内容的提问来源于stack exchange,提问作者Sanjay Shitole
相关产品推荐
相关产品推荐

