Par*_*azi 1 bash json aws-cli jq
我在json文件下面:
{
"EventId": "60a0490c",
"Resources": [
{
"ResourceType": "AWS::STS::AssumedRole",
"ResourceName": "AutoScaling"
},
{
"ResourceType": "AWS::IAM::Role",
"ResourceName": "arn:aws:iam:autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我想连接Resources元素中的键值对,并在单行输出:
60a0490c,AutoScaling=AWS::STS::AssumedRole#AWS::IAM::Role=arn:aws:iam:autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling
Run Code Online (Sandbox Code Playgroud)
我试过它:
cat file.json | jq '.EventId + "," + (.Resources[] | join("="))' -r
Run Code Online (Sandbox Code Playgroud)
它给我的输出为:
60a0490c,AutoScaling=AWS::STS::AssumedRole
60a0490c,AutoScaling=AWS::IAM::Role=arn:aws:iam:autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling
Run Code Online (Sandbox Code Playgroud)
它为每个键值对创建新条目,我希望它与不同的分隔符(#)在单行上
提前致谢.
你可以试试这个:
jq ' .EventId + "," + ([(.Resources[] | join("="))] | join("#"))' -r file
60a0490c,AWS::STS::AssumedRole=AutoScaling#AWS::IAM::Role=arn:aws:iam:autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling
Run Code Online (Sandbox Code Playgroud)
要使用第二个join()
,只需将结果包含在数组中[...]
.
请注意,第一个键/值未交换,如示例所示(即Autoscaling
值是键而不是键).