我有一个这样的config.yml文件:
defaultdict
我创建了一个shell脚本,它将为我提供virtualIP1 = '10 .104.84.221'和virtualIP2 = '10 .104.94.2'的值。 如何使Shell脚本在Shell脚本中将所有vIP1值替换为virtualIP1,并将vIP2替换为virtualIP2?
答案 0 :(得分:1)
如果您选择yq
,请尝试以下操作:
export virtualIP1='10.104.84.221'
export virtualIP2='10.104.94.2'
yq -y < config.yml '(.. | select(.HA_PGPOOL_VIRTUAL_IP? == "vIP1") | .HA_PGPOOL_VIRTUAL_IP) |= env.virtualIP1 | (.. | select(.HA_PGPOOL_VIRTUAL_IP? == "vIP2") | .HA_PGPOOL_VIRTUAL_IP) |= env.virtualIP2'
答案 1 :(得分:0)
初始化virtualIP1和virtualIP2
virtualIP1='10.104.84.221'
virtualIP2='10.104.94.2'
运行下面的命令,查看是否获得所需的输出:
sed -e "s/vIP1/$virtualIP1/g" filename
sed -e "s/vIP2/$virtualIP2/g" filename
如果以上提供了所需的输出,请使用sed
而不是i
选项运行e
,最好保留旧文件的备份。
sed -i.bak "s/vIP1/$virtualIP1/g" filename
sed -i.bak "s/vIP2/$virtualIP2/g" filename
答案 2 :(得分:0)
您可以尝试以下方法:
sed -e 's/vIP1/10.104.84.221/' -e 's/vIP2/10.104.94.2/' config.yml