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

如何在sed命令中插入制表符以保持YAML文件的缩进格式

你的问题主要出在两个地方:bash变量赋值的语法错误,以及新增行没有带上和原列表项一致的缩进空格。我来帮你修正:

1. 先修正变量赋值的语法问题

bash里变量赋值时,变量名前不能加$,你原来的$target_string=" - develop"是错误的写法,会导致脚本报错,正确的写法是去掉$。

2. 给新增行加上正确的缩进

从你给出的输出可以看到,原列表项(比如- release/*)前面有6个空格的缩进,所以你需要给新增的- TerraformTest/*也加上同样的前缀空格。

修正后的完整脚本:

target_string="      - develop"
replacement_string="      - TerraformTest/*"
sed -i "/$target_string/a $replacement_string" test.txt

更灵活的方案(自动匹配缩进)

如果你不确定缩进的空格数,或者担心后续缩进可能变化,可以用sed的正则捕获功能,自动继承原行的缩进:

sed -i -E 's/^(\s*)- develop$/\1- develop\n\1- TerraformTest\/*/' test.txt

这个命令会捕获- develop行首的所有空白字符,然后在新增行时复用这些缩进,确保格式完全一致。

执行后你会得到符合要求的YAML:

trigger:
  branches:
    include:
      - develop
      - TerraformTest/*
      - release/*
      - rapid/*
      - Sprint/*
      - Unity/*

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 14:28:15