将json数组对象与jq连接起来

将json数组对象与jq连接起来,json,bash,jq,aws-cli,Json,Bash,Jq,Aws Cli,我有以下json文件: { "EventId": "60a0490c", "Resources": [ { "ResourceType": "AWS::STS::AssumedRole", "ResourceName": "AutoScaling" }, { "ResourceType": "AWS::IAM::Role", "ResourceName": "arn:aws:iam:autoscalin

我有以下json文件:

{
"EventId": "60a0490c",
"Resources": [
    {
        "ResourceType": "AWS::STS::AssumedRole", 
        "ResourceName": "AutoScaling"
    }, 
    {
        "ResourceType": "AWS::IAM::Role", 
        "ResourceName": "arn:aws:iam:autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
    }
    ]
}
我想连接Resources元素中的键值对,并在单行上输出为:

60a0490c,AutoScaling=AWS::STS::AssumedRole#AWS::IAM::Role=arn:aws:iam:autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling
我试着这样做:

cat file.json | jq '.EventId + "," + (.Resources[] | join("="))' -r
它给我的输出是:

60a0490c,AutoScaling=AWS::STS::AssumedRole
60a0490c,AutoScaling=AWS::IAM::Role=arn:aws:iam:autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling
它为每个键值对创建新的条目,我希望它位于具有不同delimeter的单行上

提前感谢。

您可以尝试以下方法:

jq ' .EventId + "," + ([(.Resources[] | join("="))] | join("#"))' -r file
60a0490c,AWS::STS::AssumedRole=AutoScaling#AWS::IAM::Role=arn:aws:iam:autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling
要使用第二个联接,只需将结果括在数组[…]中

请注意,第一个键/值没有如示例中所示进行交换,即自动缩放是值而不是键。

您可以尝试以下操作:

jq ' .EventId + "," + ([(.Resources[] | join("="))] | join("#"))' -r file
60a0490c,AWS::STS::AssumedRole=AutoScaling#AWS::IAM::Role=arn:aws:iam:autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling
要使用第二个联接,只需将结果括在数组[…]中


请注意,第一个键/值没有如示例中所示进行交换,即自动缩放是值而不是键。

您确定使用的命令提供了您所显示的输出吗?在我的mac上,输出是不同的:60a0490c,AWS::STS::AssumedRole=AutoScaling 60a0490c,AWS::IAM::Role=arn:AWS:IAM:AutoScaling.amazonaws.com/AWSServiceRoleFrautoscalingHi Ashutosh,我在ubuntu和mac上都尝试了上述命令,输出相同。$jq-version jq-1.5-1-a5b5cbeAre您确定您使用的命令给出了您所显示的输出吗?在我的mac上,输出是不同的:60a0490c,AWS::STS::AssumedRole=AutoScaling 60a0490c,AWS::IAM::Role=arn:AWS:IAM:AutoScaling.amazonaws.com/AWSServiceRoleFrautoscalingHi Ashutosh,我在ubuntu和mac上都尝试了上述命令,输出相同。$jq-版本jq-1.5-1-a5b5cbeYes,这解决了我的问题,感谢oliv的快速响应。是的,这解决了我的问题,感谢oliv的快速响应。