修改 bash 中的 yaml 数组
Modifying yaml array in bash
我有一个包含以下内容的文件,
- groups:
- system:bootstrappers
- system:nodes
rolearn: arn:aws:iam::1234566:role/radeks-project-us-east-1-NodeInstanceRole
username: system:node:{{EC2PrivateDNSName}}
我想附加此文件内容,如下所示,其中 eks ,iammappings 作为前两行,
eks:
iammappings:
- groups:
- system:bootstrappers
- system:nodes
rolearn: arn:aws:iam::1234566:role/radeks-project-us-east-1-NodeInstanceRole
username: system:node:{{EC2PrivateDNSName}}
我试过 yq merge.But 它没有用 me.Please 让我知道怎么做。
在 bash 中有一个用于解析 yaml 的特定工具,即 yq
与 jq
相同。
Link - https://github.com/mikefarah/yq
你必须修改源yaml文件如下
- groups:
- system:bootstrappers
- system:nodes
- rolearn: arn:aws:iam::1234566:role/radeks-project-us-east-1-NodeInstanceRole
- username: system:node:{{EC2PrivateDNSName}}
否则 yq
不会接受它作为正确的 yaml 文件。
接下来要完成您的工作,请使用以下命令
yq p -i file.yaml 'eks.iammappings'
以上命令使用了prefix
函数,会原地替换。文件内容如下
eks:
iammappings:
- groups:
- system:bootstrappers
- system:nodes
- rolearn: arn:aws:iam::1234566:role/radeks-project-us-east-1-NodeInstanceRole
- username: system:node:{{EC2PrivateDNSName}}
我有一个包含以下内容的文件,
- groups:
- system:bootstrappers
- system:nodes
rolearn: arn:aws:iam::1234566:role/radeks-project-us-east-1-NodeInstanceRole
username: system:node:{{EC2PrivateDNSName}}
我想附加此文件内容,如下所示,其中 eks ,iammappings 作为前两行,
eks:
iammappings:
- groups:
- system:bootstrappers
- system:nodes
rolearn: arn:aws:iam::1234566:role/radeks-project-us-east-1-NodeInstanceRole
username: system:node:{{EC2PrivateDNSName}}
我试过 yq merge.But 它没有用 me.Please 让我知道怎么做。
在 bash 中有一个用于解析 yaml 的特定工具,即 yq
与 jq
相同。
Link - https://github.com/mikefarah/yq
你必须修改源yaml文件如下
- groups:
- system:bootstrappers
- system:nodes
- rolearn: arn:aws:iam::1234566:role/radeks-project-us-east-1-NodeInstanceRole
- username: system:node:{{EC2PrivateDNSName}}
否则 yq
不会接受它作为正确的 yaml 文件。
接下来要完成您的工作,请使用以下命令
yq p -i file.yaml 'eks.iammappings'
以上命令使用了prefix
函数,会原地替换。文件内容如下
eks:
iammappings:
- groups:
- system:bootstrappers
- system:nodes
- rolearn: arn:aws:iam::1234566:role/radeks-project-us-east-1-NodeInstanceRole
- username: system:node:{{EC2PrivateDNSName}}