2017-05-16 3 views
1

JSONオブジェクトから複数の要素を返すためにjqを使用しようとしています。私はフィールドを抽出しようとしている複数の要素を返すためにjqを使用しますか?

{ 
"ReservedInstancesOfferings": [{ 
     "OfferingClass": "convertible", 
     "OfferingType": "No Upfront", 
     "AvailabilityZone": "ap-southeast-2a", 
     "InstanceTenancy": "default", 
     "PricingDetails": [], 
     "ProductDescription": "Linux/UNIX", 
     "UsagePrice": 0.0, 
     "RecurringCharges": [{ 
      "Amount": 0.167, 
      "Frequency": "Hourly" 
     }], 
     "Marketplace": false, 
     "CurrencyCode": "USD", 
     "FixedPrice": 0.0, 
     "Duration": 94608000, 
     "Scope": "Availability Zone", 
     "ReservedInstancesOfferingId": "1fc8c02b-bcc0-42b8-82ef-47c6f6d1c1b5", 
     "InstanceType": "c4.xlarge" 
    }, 
    { 
     "OfferingClass": "convertible", 
     "OfferingType": "No Upfront", 
     "AvailabilityZone": "ap-southeast-2a", 
     "InstanceTenancy": "dedicated", 
     "PricingDetails": [], 
     "ProductDescription": "Red Hat Enterprise Linux", 
     "UsagePrice": 0.0, 
     "RecurringCharges": [{ 
      "Amount": 0.243, 
      "Frequency": "Hourly" 
     }], 
     "Marketplace": false, 
     "CurrencyCode": "USD", 
     "FixedPrice": 0.0, 
     "Duration": 94608000, 
     "Scope": "Availability Zone", 
     "ReservedInstancesOfferingId": "24aaceee-f54e-4882-aba3-ce710a5036c9", 
     "InstanceType": "c4.xlarge" 
    } 
] 

}

.ReservedInstancesOfferings[].ProductDescription 
.ReservedInstancesOfferings[].InstanceType 
.ReservedInstancesOfferings[].RecurringCharges[].Amount 

私が考えたデータは、これは、出力のほんのセクションで、AWS CLIのルックアップから来ています

"Red Hat Enterprise Linux" 
"c4.xlarge" 
0.183 

上記のように、私はすべての要素を抽出する方法を理解していますviduallyしかし、私はどのように一緒にすべての希望の出力を達成するために働くことはできません。私はカンマでクエリを分離することを真実にしましたが、それは望ましい出力を提供しません。

ご協力いただければ幸いです。

ありがとうございました!

編集:

ああ、私はそれを持っています!完全な答えは以下の通りです。少年少年のJQは強力です!

がうまくいけば、これは誰か:)

+0

あなたは自身の答えを追加する必要があります単に質問を編集するのではなく、 –

+0

うん、私は少し興奮して:)答えは以下のとおりです。 –

答えて

2

OKを助け、私は私が後だったものを得ることができました。私はまだ、入力フィールドの一部として行うことを少し以降の整理整頓を持って完全に均一ではありませんが、それはして前進するために十分近いです:

aws ec2 describe-reserved-instances-offerings --availability-zone "ap-southeast-2a" --instance-type "c4.xlarge" | 
jq '.ReservedInstancesOfferings[] | [.ProductDescription, .InstanceType, .RecurringCharges[].Amount]' 

出力:

[ 
    "Linux/UNIX", 
    "c4.xlarge", 
    0.167 
] 
[ 
    "Red Hat Enterprise Linux", 
    "c4.xlarge", 
    0.243 
] 
[ 
    "Red Hat Enterprise Linux", 
    "c4.xlarge", 
    0.227 
] 
[ 
    "Linux/UNIX", 
    "c4.xlarge", 
    0.183 
] 
[ 
    "SUSE Linux", 
    "c4.xlarge", 
    0.2 
] 
関連する問題