使用sed删除yaml文件中的key:value

使用sed删除yaml文件中的key:value,sed,Sed,我有一个像这样的大型yaml固定装置。是否有一个整洁的sed一行程序可以删除产品字段的所有(键:值) - model: something pk: 777 fields: created: 2015-06-10 10:16:41.142044+00:00 modified: 2017-01-11 14:31:03.030313+00:00 name: something products: [932, 3153, 3154] - model: someth

我有一个像这样的大型yaml固定装置。是否有一个整洁的sed一行程序可以删除产品字段的所有(键:值)

- model: something
  pk: 777
  fields:
    created: 2015-06-10 10:16:41.142044+00:00
    modified: 2017-01-11 14:31:03.030313+00:00
    name: something
    products: [932, 3153, 3154]
- model: something2
...
我知道我可以使用类似的东西,但是如何删除直到第一次出现']'为止

sed '/^    products:/ d' < old.yaml > new.yaml
sed'/^products:/d'new.yaml

为清晰起见,添加预期输出<代码>删除直到第一次出现“]”从何处开始?示例中只有一组方括号。产品:[93231154]。阵列可以很大,因此它跨越多条线。我想删除关键产品和数组中的值。因此,修改示例以包括单行和多行(例如3行),并为此添加预期输出,以便在不受其他约束的情况下更容易测试那些希望回答问题的人(比如,
products
始终是
model
的最后一行,
products
列表从不使用替代表示法-要点等),使用
sed
解析YAML将非常脆弱和/或困难(肯定不是一行代码).请使用合适的工具来完成这项工作。在你能想到的每种语言中都有大量的YAML解析器。