使用sed/bash替换YAML文件中的项
我想使用bash脚本动态地将YAML文件中的Addresses字段替换为变量order_列表中的项目,即如果order_列表中有3个项目,那么Addresses字段中的项目也将是3个。顺序无关紧要使用sed/bash替换YAML文件中的项,bash,Bash,我想使用bash脚本动态地将YAML文件中的Addresses字段替换为变量order_列表中的项目,即如果order_列表中有3个项目,那么Addresses字段中的项目也将是3个。顺序无关紧要 ORDERER_LIST="orderer0-orderer-org:7050 orderer1-orderer-org:7050" 以下是yaml文件示例: Orderer: &OrdererDefaults OrdererType: kafka Addresses: -
ORDERER_LIST="orderer0-orderer-org:7050 orderer1-orderer-org:7050"
以下是yaml文件示例:
Orderer: &OrdererDefaults
OrdererType: kafka
Addresses:
- 1 (to be replaced with item in ORDERER_LIST)
- 2 (to be replaced with item in ORDERER_LIST)
- etc
而不是寻找和替换元素。我认为应该使用bash脚本生成YAML文件。你可以用下面的方法来做
#!/bin/bash
ORDERER_LIST="orderer0-orderer-org:7050 orderer1-orderer-org:7050"
IFS=' ' read -ra arr <<< "$ORDERER_LIST"
echo "Orderer: &OrdererDefaults
OrdererType: kafka
Addresses:"
for i in "${arr[@]}"
do
echo " - $i"
done
让我知道它是否有用。而不是查找和替换元素。我认为应该使用bash脚本生成YAML文件。你可以用下面的方法来做
#!/bin/bash
ORDERER_LIST="orderer0-orderer-org:7050 orderer1-orderer-org:7050"
IFS=' ' read -ra arr <<< "$ORDERER_LIST"
echo "Orderer: &OrdererDefaults
OrdererType: kafka
Addresses:"
for i in "${arr[@]}"
do
echo " - $i"
done
如果有帮助,请告诉我。为什么不使用正确的语法感知YAML解析器?您可以使用
ruamel生成或更新示例YAML(包括非引用锚)。YAML
无需使用bash生成脆弱的“解决方案”,只要YAML语义保持不变,就会中断,但格式已更改(从块到流样式,从纯标量到引号或文字样式标量)我正在尝试最小化依赖关系,因为我将在没有解析器的容器映像上运行。这就是为什么我想使用bashWhy不使用正确的语法感知YAML解析器?您可以生成或更新示例YAML(包括非引用锚定)使用ruamel.yaml
无需使用bash创建一个脆弱的“解决方案”,只要yaml语义保持不变,就会中断,但格式会发生更改(从块样式到流样式,从普通标量到引用或文字样式标量)我试图最小化依赖关系,因为我将在没有解析器的容器映像上运行。这就是为什么我想使用bash