首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >yq:按字母顺序增加新的价值

yq:按字母顺序增加新的价值
EN

Stack Overflow用户
提问于 2022-07-28 21:32:48
回答 1查看 216关注 0票数 0

我有一个名为foo.yaml的简单yaml文件

代码语言:javascript
复制
foo:
 - a
 - c
bar:
 - foo: bar
   foo2: bar2

我试图按字母顺序向b添加一个新值( foo )。我可以用+=增加这个值,但它不会按字母顺序排列

代码语言:javascript
复制
$ yq '.foo += "b"' foo.yaml

foo:
  - a
  - c
  - b
bar:
  - foo: bar
    foo2: bar2

如果我使用+,我可以使用sort,但我只获得原始值。例如:

代码语言:javascript
复制
$ yq '.foo + "b" | sort()' foo.yaml

- a
- b
- c

我试图将其设置为bash变量,然后将其与=一起使用,但它显示为多行文本。

代码语言:javascript
复制
$ variable=$(yq '.foo + "b" | sort()' foo.yaml)

$ yq ".foo = \"$variable\"" foo.yaml

foo: |-
  - a
  - b
  - c
bar:
  - foo: bar
    foo2: bar2

是否有更简单的方法将一个新值按字母顺序插入到foo中,同时保持yaml的其余部分的灵活性?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-29 04:54:07

您获得原始值的原因是您告诉yq遍历“foo”。相反,试着:

代码语言:javascript
复制
yq '.foo = (.foo + "b" | sort)' file.yaml 

产量:

代码语言:javascript
复制
foo:
  - a
  - b
  - c
bar:
  - foo: bar
    foo2: bar2

解释:

  • 您需要更新‘foo’
  • 中的条目,然后在括号中设置新值。通常您可以使用+=,但是因为您想排序,所以我使用了'='

免责声明:我写了yq

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73159412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档