我有一个包含如下数据的文件。xyz
可以是任何东西,所以我想替换它。
variable "azure_spoke_gateways" {
default = {
spoke1 = {
name = "xyz"
size = "max"
vpc = "azure_spoke1_vnet"
},
}
}
variable "google_spoke_gateways" {
default = {
spoke1 = {
name = "xyz"
size = "max"
vpc = "azure_spoke1_vnet"
},
}
}
我只想替换variable azure_spoke_gateways
's 的值name
。所需的输出是:
variable "azure_spoke_gateways" {
default = {
spoke1 = {
name = "MYSTRING"
size = "max"
vpc = "azure_spoke1_vnet"
},
}
}
你可以使用这个 Perl 命令:
它将用 替换内部
""
(不仅xyz
)的name
任何内容MYSTRING
。如果您只想替换
xyz
,请使用:要
input_file
就地更改,请在 .-i
之前添加标志input_file
。假设块由一个或多个空行分隔,您可以使用 awk 的段落模式执行以下操作:
如果字段的顺序已知且固定,则可以省去循环来定位
name
字段。如果您没有 GNU awk (gawk),那么您可以使用常规 awk 但无法使用它来
RT
重新替换实际的记录分隔符 - 您需要设置ORS
为固定的东西,例如\n\n
.通常,只要您跟踪小节,您就可以逐行解析更简单的格式。
您也可以将其作为脚本文件。
然后你像这样运行脚本。
与
sed
: