【发布时间】:2019-09-04 05:30:40
【问题描述】:
我是 sed 的新手,发现了一些针对这类问题的说明,但没有一个对我有用。
我有一个名为 var.tf 的文件,其中包含该条目:
variable "nb_instances" {
description = "Specify the number of vm instances"
default = "3"
}
想把“3”换成“4”。
我试图创建那个 bash 脚本:
#!/usr/bin/env bash
sed 's/variable \"nb_instances\" {
description = \"Specify the number of vm instances\"
default = \"3\"
}/variable \"nb_instances\" {
description = \"Specify the number of vm instances\"
default = \"4\"
}/g' var.tf
但它不起作用并给出错误:
sed: 1: "s/variable \"nb_instanc ...": 未终止的替代模式
谁能帮我解决这个问题?我还尝试在新行中包含 \n。
【问题讨论】:
-
即使你在模式中使用
\n,它也不起作用:sed默认在单独的行上运行。 -
如果输入文件中只有一行包含
default,可以使用sed '/default/ s/"3"/"4"/' var.tf,如果不行,请告诉我们原因 -
感谢您的回答,有多个相同的行,“default”和“3”必须是通配符,不清楚会有什么数字。
-
那么,有没有更简单的限定词?像
variable "nb_instances"是不同的吗?如果是这样,是否可以保证default之后将成为第二行?sed -E '/variable "nb_instances"/ {n;n; s/"[0-9]+"/"4"/}'适用于这种情况
标签: sed