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

标签 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"
}

最佳答案

这是针对您的问题的 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"

关于shell - sed 在正则表达式中给出未终止替换的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49540457/

相关文章:

bash - 如何删除以反斜杠开头的任何字符串?

bash - 文件中最长的一行

linux - 使用awk解析配置

bash - AWK,奇数行算术OP

javascript - bash 上替代 sed 的问题

bash - 如何从多个文件中删除特定字符串之前的所有行

python - 如何知道 Crontab 是否正常工作?

linux - 词频和-gt

android - 如何从android代码启动 "uiautomator test run"?

bash - 使用 AWK 递归查找