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

如何使用Sed匹配YAML文件行首指定模式后删除对应内容块?

Sed删除YAML指定配置块实现方案

可用命令

直接执行以下命令即可处理目标YAML文件,默认输出处理后的结果到终端:

sed '/^LaunchPad:/{:del; N; /\n[^-]/!b del; s/LaunchPad:.*\n//}' your_file.yaml

如果需要直接修改原文件,添加-i参数即可:

sed -i '/^LaunchPad:/{:del; N; /\n[^-]/!b del; s/LaunchPad:.*\n//}' your_file.yaml

如果待删除的LaunchPad块可能出现在YAML文件末尾(后面没有其他顶层配置项),可以使用兼容末尾场景的版本:

sed '/^LaunchPad:/{:del; $d; N; /\n[^-]/!b del; s/LaunchPad:.*\n//}' your_file.yaml

命令逻辑说明

  • 第一步通过正则/^LaunchPad:/精准定位要删除的配置块起始行,即行首为LaunchPad:的顶层配置项,不会误判缩进位置出现的同名内容
  • 定位到起始行后设置循环标签del,逐行追加读取后续内容到模式空间
  • 每读入一行就判断当前最新读入的行是否以-开头:如果是就继续循环读下一行;如果碰到行首不是-的内容(也就是下一个顶层配置项的开头),立刻终止循环
  • 最后把模式空间中从LaunchPad:开始到最后一个换行之间的所有待删除内容清空,保留终止位置的非-开头行及后续所有内容,不会越界删除其他配置块

适配说明

如果需要删除其他顶层配置块,只需要把命令里两处LaunchPad:替换成对应目标块的行首关键词即可,比如要删除Keypages块就把匹配正则改成/^Keypages:/,替换规则里的关键词同步替换即可。
处理示例给出的原始YAML内容,执行命令后得到的结果完全匹配预期:

Keypages:
- name: Key pages
Microservices:
- name: 'Micro services '

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 14:06:22