首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >sed在正则表达式中给出未终止替换的错误

sed在正则表达式中给出未终止替换的错误
EN

Stack Overflow用户
提问于 2018-03-29 01:11:15
回答 3查看 22.6K关注 0票数 5

我尝试替换文件中的字符串“x.x”,并将结果输出到另一个文件。在正则表达式中出现未终止替换的错误

以下是代码

代码语言:javascript
运行
复制
sed 's/x.x.x.x/'$bigip_management_ip'/g' temp.tt >> variables.tf
sed: 1: "s/x.x.x.x/": unterminated substitute in regular expression

echo $bigip_management_ip

代码语言:javascript
运行
复制
54.83.174.153

狗屎$ cat temp.tt

代码语言:javascript
运行
复制
variable "bigip_management_ip" {
  default = "x.x.x.x"
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-03-29 01:21:09

以下是针对您的问题的MCVE:

代码语言:javascript
运行
复制
bigip_management_ip=" 54.83.174.153"
sed 's/x.x.x.x/'$bigip_management_ip'/g'

当在macOS上执行时,你会得到:

代码语言:javascript
运行
复制
sed: 1: "s/x.x.x.x/": unterminated substitute in regular expression

问题是变量中的前导空格由于缺少引号而导致单词拆分。ShellCheck对此发出警告:

代码语言:javascript
运行
复制
In /Users/myuser/myscript line 2:
    sed 's/x.x.x.x/'$bigip_management_ip'/g'
                    ^-- SC2086: Double quote to prevent globbing and word splitting.

你应该总是引用你的变量,除非你确定你不能:

代码语言:javascript
运行
复制
sed "s/x.x.x.x/$bigip_management_ip/g"
票数 6
EN

Stack Overflow用户

发布于 2018-03-29 01:20:14

只需像下面这样更改您的命令,它对我来说很有效。

代码语言:javascript
运行
复制
sed 's|'x.x.x.x'|'"$bigip_management_ip"'|g' temp.tt >> variables.tf
票数 4
EN

Stack Overflow用户

发布于 2021-03-30 10:56:52

代码语言:javascript
运行
复制
sed s/x\\.x\\.x\\.x/\\$bigip_management_ip/g
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49540457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档