我尝试替换文件中的字符串“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
狗屎$ cat temp.tt
variable "bigip_management_ip" {
default = "x.x.x.x"
}
发布于 2018-03-29 01:21:09
以下是针对您的问题的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"
发布于 2018-03-29 01:20:14
只需像下面这样更改您的命令,它对我来说很有效。
sed 's|'x.x.x.x'|'"$bigip_management_ip"'|g' temp.tt >> variables.tf
发布于 2021-03-30 10:56:52
sed s/x\\.x\\.x\\.x/\\$bigip_management_ip/g
https://stackoverflow.com/questions/49540457
复制相似问题