You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用sed动态替换K8s YAML第17行的ECR账号ID

问题描述

需要动态替换Kubernetes YAML文件第17行中ECR镜像地址里,位于image:和.dkr之间的任意内容为通过Terraform获取的AWS账号ID。原先的sed命令只能匹配{{ACCOUNT}}占位符,无法满足替换任意内容的需求。

待替换行示例:

image: {{ACCOUNT}}.dkr.ecr.us-east-1.amazonaws.com/ecr-repo:my-image

现有命令:

sed -i '17 s/{{ACCOUNT}}/${data.aws_caller_identity.current.account_id}/g' <filename>
解决方案

使用支持扩展正则表达式的sed命令,通过正则精准匹配image:到.dkr之间的任意内容并替换:

sed -i -E "17 s/image: \K.*(?=\.dkr)/${data.aws_caller_identity.current.account_id}/" <filename>

命令细节说明:

  • -E:启用扩展正则表达式,让正向预查等语法生效
  • 17:指定仅处理文件的第17行
  • image: \K:匹配image: 字符串后,用\K舍弃前面的匹配内容,只对后续目标部分进行替换
  • .*(?=\.dkr):匹配任意字符直到遇到.dkr(正向预查(?=\.dkr)确保匹配范围截止到.dkr前,且不包含.dkr本身)
  • ${data.aws_caller_identity.current.account_id}:Terraform获取的目标AWS账号ID变量

这个命令会把第17行里image:和.dkr之间的所有内容替换为指定的账号ID,不管原来这部分是占位符还是其他任意字符。

内容的提问来源于stack exchange,提问作者curiousgeek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 14:36:19