gpt4 book ai didi

yq - 如何有条件地使用 "yq"添加/替换数组元素

转载 作者:行者123 更新时间:2023-12-05 09:30:53 24 4
gpt4 key购买 nike

我正在寻求有关使用“yq”按名称替换/添加现有数组元素的帮助。也是有条件的?感谢您在这方面的帮助。

到目前为止,我已经尝试了以下方法......但这只是合并,当我在更新后重新运行它时,我得到了重复项。

yq eval-all '... comments="" | . as $item ireduce ({}; . *+ $item)' kong-oauth.yaml kong-apikey.yaml

在下面的场景中,我喜欢仅按名称更新“Master.yaml”“服务”数组。

Master.yaml

services:
- name: service1
url: https://service1.microservice.net
- name: service2
url: https://service2.microservice.net

service3.yaml

services:
- name: service3
url: https://service3.microservice.net

service2.yaml

services:
- name: service2
url: https://service22.microservice.net

预期的 YAML

services:
- name: service1
url: https://service1.microservice.net
- name: service2
url: https://service22.microservice.net
- name: service3
url: https://service3.microservice.net

谢谢桑杰

最佳答案

我没有足够的代表对你的回答发表评论 @kev - 但那非常简洁。我将稍微清理一下并将其放入 yq 文档中的提示和技巧中。

我让它变得更通用一点,并将其全部放在一个命令中:

yq ea '.services = (
((.services[] | {.name: .}) as $item ireduce ({}; . * $item )) as $uniqueMap
| ( $uniqueMap | to_entries | .[]) as $item ireduce([]; . + $item.value)
) | select(fi==0)' *.yaml

披露:我写了yq

关于yq - 如何有条件地使用 "yq"添加/替换数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69246180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com