如何在,之后在逗号后面添加"arn:aws:iam::xxxxxxx:role/3"
行。"arn:aws:iam::xxxxxxx:role/2"
"arn:aws:iam::xxxxxxx:role/2"
前:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
},
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::xxxxxxx:role/1",
"arn:aws:iam::xxxxxxx:role/2"
]
},
"Action": "sts:AssumeRole"
}
]
}
后
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
},
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::xxxxxxx:role/1",
"arn:aws:iam::xxxxxxx:role/2",
"arn:aws:iam::xxxxxxx:role/3"
]
},
"Action": "sts:AssumeRole"
}
]
}
不要尝试使用标准的文本处理工具(例如)来解析JSON文本awk
,sed
或者不要使用中的JSON模块来解析JSON文本perl
,因为它们不支持JSON语法。jq
是一个轻量级的JSON处理器,可让您即时处理内容。
例如,您的要求可以简单地写成
jq --arg new "arn:aws:iam::xxxxxxx:role/3" '.Statement[].Principal.AWS? += [$new]' json
如果要附加多个元素,则将arg创建为JSON blob
jq --argjson new '["arn:aws:iam::xxxxxxx:role/3", "arn:aws:iam::xxxxxxx:role/4"]' '.Statement[].Principal.AWS? += $new'
有关下载和使用该工具的说明,请参见下载jq和jq手册中的用法教程。
如果内容在文件中,并且您要永久修改此文件,请使用就地编辑工具,例如sponge
GNU moreutils包中提供的工具,您可以执行此操作
jq --arg new "arn:aws:iam::xxxxxxx:role/3" '.Statement[].Principal.AWS? += [$new]' json | sponge json
或使用类似POSIX的工具 mktemp
temp="$(mktemp)"
jq --arg new "arn:aws:iam::xxxxxxx:role/3" '.Statement[].Principal.AWS? += [$new]' json > "$temp" && mv "$temp" json
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句