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

Windows下匹配含前导空格的行并按相同缩进插入新行的实现方法

批量修改配置文件实现方案

操作前请先备份所有待修改的配置文件,避免操作失误导致内容丢失。

你可以通过以下两种常用命令行工具实现批量操作,自动匹配目标行的缩进格式,无需手动处理不同文件的缩进差异:

方法1:GNU Sed(Linux环境首选,支持直接原地修改文件)

执行以下命令可批量处理当前目录下所有yaml配置文件,自动在匹配行下方插入对应缩进的新配置:

# 批量修改当前目录下所有.yml/.yaml文件,可自行修改文件匹配规则
sed -i -E '/^([[:space:]]*)caseSensitive: false/{a\
\1printMatchedString: false
}' *.yaml

参数说明:

  • ^([[:space:]]*) 捕获目标行开头所有的空白字符(空格/制表符),存入分组\1
  • a\ 是sed的追加行指令,插入的行复用捕获的分组\1保证缩进和原行完全一致
  • -i 参数直接修改原文件,测试时可先去掉-i查看输出是否符合预期

方法2:Awk(全平台兼容,适合macOS/BSD环境)

如果是macOS等默认不带GNU Sed的环境,用awk命令实现:

# 处理单个文件,输出到新文件
awk '/^[[:space:]]*caseSensitive: false/{print; match($0, /^[[:space:]]+/); print substr($0, RSTART, RLENGTH) "printMatchedString: false"; next}1' 原文件.yaml > 新文件.yaml

# 批量处理当前目录所有yaml文件
for file in *.yaml; do
  awk '/^[[:space:]]*caseSensitive: false/{print; match($0, /^[[:space:]]+/); print substr($0, RSTART, RLENGTH) "printMatchedString: false"; next}1' "$file" > "$file.tmp" && mv "$file.tmp" "$file"
done

参数说明:

  • match($0, /^[[:space:]]+/) 提取当前行开头的所有空白字符
  • 插入行时复用提取到的空白前缀,保证缩进完全匹配

处理后的效果完全符合预期,所有匹配到的caseSensitive: false行下方都会自动插入相同缩进的printMatchedString: false配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:18:03