给定一个 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
我可以对路径包含数组中的锚点的条目做类似的事情吗?