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

时间:2018-03-28 17:11:15

标签: shell awk sed

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

这是代码

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

54.83.174.153

shitole $ cat temp.tt

variable "bigip_management_ip" {
  default = "x.x.x.x"
}

3 个答案:

答案 0 :(得分:2)

只需更改下面的命令,它对我有用。

sed 's|'x.x.x.x'|'"$bigip_management_ip"'|g' temp.tt >> variables.tf

答案 1 :(得分:2)

这是您的问题的MCVE:

bigip_management_ip=" 54.83.174.153"
sed 's/x.x.x.x/'$bigip_management_ip'/g'

在macOS上执行时,您会得到:

sed: 1: "s/x.x.x.x/": unterminated substitute in regular expression

问题是由于缺少引用而引起单词拆分的变量中的前导空格。 ShellCheck警告说:

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.

除非您确定不能

,否则应始终引用变量
sed "s/x.x.x.x/$bigip_management_ip/g"

答案 2 :(得分:0)

sed s/x\\.x\\.x\\.x/\\$bigip_management_ip/g