0

给定一个 yaml 文件:

Organizations:
  - &org-o1
    O_Endpoints:
      - o1.address:1234
  - &org-p1
    Anchors:
      - Host: p1.address
  - &org-o2
    O_Endpoints:
      - o2.address:2345

我想更新Organizations.[&org-o1].O_Endpoints.

我可以使用此命令进行更改:

yq eval -i '.Organizations.[0].O_Endpoints = "o1.address:5555" $file

但是我不能总是预测 的位置 [x] org-o1,所以这个命令是不够的。

我还可以使用此命令更新O_Endpoints所有数组条目的值:

yq eval -i '.Organizations.[].O_Endpoints[0] = "o1.address:5555"' $File

但是,此命令会添加O_Endpoints到当前没有它们的条目中。我只想更新现有条目,而不是添加新条目。

如果 org-o1 不是锚点,我可以使用以下命令更新它而不知道它的确切位置:

L=$(yq eval '.Organizations.[] | select(. == "org-o1") | path | .[-1]' $File) #get Line Number
L=$L yq eval -i '.Organizations[env(L)].O_Endpoints = "o1.address:5555"' $File

我可以对路径包含数组中的锚点的条目做类似的事情吗?

4

0 回答 0