解析传递给 YML 的变量
Parsing variables that are passed to YML
我有一个类似于下面的 yml 文件
functionbeat.provider.aws.functions:
- name: cloudwatch
enabled: true
type: cloudwatch_logs
description: "lambda function for cloudwatch logs"
triggers:
- log_group_name: "my-application-1"
我希望能够在此处扩展 log_group_name
密钥。
这个想法是 log_group_name
键通过变量作为列表传递,例如
logGroups = my-application-1,my-application-2,my-application-3,my-application-4
我希望在 yml
中将其转换为
functionbeat.provider.aws.functions:
- name: cloudwatch
enabled: true
type: cloudwatch_logs
description: "lambda function for cloudwatch logs"
triggers:
- log_group_name: "my-application-1"
- log_group_name: "my-application-2"
- log_group_name: "my-application-3"
- log_group_name: "my-application-4"
是否可以使用 shellscript 或任何 parser/tool 来做到这一点?非常感谢任何帮助。
将 bash 与 awk 一起使用:
首先将原始yaml模板放在一个名为elastic的文件中:
functionbeat.provider.aws.functions:
- name: cloudwatch
enabled: true
type: cloudwatch_logs
description: "lambda function for cloudwatch logs"
triggers:
- log_group_name: "my-application-1"
然后使用以下脚本:
#!/bin/bash
awk -v lognam= '/log_group_name:/ { split(lognam,arry,",");for (i in arry) { printf "\t- log_group_name: \"%s\"\n",arry[i] } } !/log_group_name:/ { print [=11=] }' elastic
我们传入一个变量,例如“我的应用程序 1,我的应用程序 2”。然后脚本将变量作为变量 lognam 传递给 awk。对于所有不是模式匹配“log_group_name:”的字符串,只打印该行,否则,将变量 lognam 拆分为一个名为 arry 的数组,以“,”分隔,然后遍历该数组打印前缀为选项卡和“- log_group_name:“
我有一个类似于下面的 yml 文件
functionbeat.provider.aws.functions:
- name: cloudwatch
enabled: true
type: cloudwatch_logs
description: "lambda function for cloudwatch logs"
triggers:
- log_group_name: "my-application-1"
我希望能够在此处扩展 log_group_name
密钥。
这个想法是 log_group_name
键通过变量作为列表传递,例如
logGroups = my-application-1,my-application-2,my-application-3,my-application-4
我希望在 yml
中将其转换为functionbeat.provider.aws.functions:
- name: cloudwatch
enabled: true
type: cloudwatch_logs
description: "lambda function for cloudwatch logs"
triggers:
- log_group_name: "my-application-1"
- log_group_name: "my-application-2"
- log_group_name: "my-application-3"
- log_group_name: "my-application-4"
是否可以使用 shellscript 或任何 parser/tool 来做到这一点?非常感谢任何帮助。
将 bash 与 awk 一起使用:
首先将原始yaml模板放在一个名为elastic的文件中:
functionbeat.provider.aws.functions:
- name: cloudwatch
enabled: true
type: cloudwatch_logs
description: "lambda function for cloudwatch logs"
triggers:
- log_group_name: "my-application-1"
然后使用以下脚本:
#!/bin/bash
awk -v lognam= '/log_group_name:/ { split(lognam,arry,",");for (i in arry) { printf "\t- log_group_name: \"%s\"\n",arry[i] } } !/log_group_name:/ { print [=11=] }' elastic
我们传入一个变量,例如“我的应用程序 1,我的应用程序 2”。然后脚本将变量作为变量 lognam 传递给 awk。对于所有不是模式匹配“log_group_name:”的字符串,只打印该行,否则,将变量 lognam 拆分为一个名为 arry 的数组,以“,”分隔,然后遍历该数组打印前缀为选项卡和“- log_group_name:“