为了提供一些背景信息,我有一个构建服务器任务,需要更新配置文件(yaml 格式)字段值并推送到 repo 以供以后使用。我立即想到的是使用某种形式的正则表达式搜索/替换,但我想知道是否还有其他/更好的方法来实现这一点?
IE:
# Before
my_field : 2
# After
my_field : 3.1
当然,该文件将包含其他需要保持不变的字段值。
编辑
因此,根据 rbtux 的建议,我找到了一个可以解决我问题的 ruby yaml 模块。它的工作原理如下:
源.yaml:
---
some_value: 1
my_value: 2
new_value: 3
替换.ruby:
require 'yaml'
hiera = YAML.load_file('source.yaml');
hiera['my_value'] = "other data"
File.open('source.yaml','r+') do |h|
h.write hiera.to_yaml
end
puts hiera['my_value'] # outputs my_value as 'other data' with other variables intact
您可以扩展此功能以将值作为参数传递。
答案1
最好的方法是选择提供 yaml 操作实用程序的脚本语言 perl、python、ruby 等。
如果文件足够简单,你可以使用 sed hack:
sed 's/^\(\s*my_field\s*:\s*\).*/\1new-value/'