2016-09-06 6 views
0

jsonを使用してjsonドキュメントからプロパティを取得しようとしています。私は特定の名前で最新のスナップショットを取得したい。ここで私は、フィルタここjqを使用してjsonを選択してフィルタリングしないでください。

snapid=aws redshift describe-cluster-snapshots --region us-west-2 | jq'.[] | select(.ClusterIdentifier=="dev-cluster") | max_by(.SnapshotCreateTime) | .SnapshotIdentifier' 

で選択を追加するまで正常に動作bashでJQのなステートメントは、私から引っ張ってるJSONドキュメントです。複数のスナップショットエントリがありますが、これが私がターゲットにしているものです。

{ 
    "Snapshots": [   
     { 
       "EstimatedSecondsToCompletion": 0, 
       "OwnerAccount": "45645641155", 
       "CurrentBackupRateInMegaBytesPerSecond": 6.2857, 
       "ActualIncrementalBackupSizeInMegaBytes": 22.0, 
       "NumberOfNodes": 3, 
       "Status": "available", 
       "VpcId": "myvpc", 
       "ClusterVersion": "1.0", 
       "Tags": [], 
       "MasterUsername": "ayxbizops", 
       "TotalBackupSizeInMegaBytes": 192959.0, 
       "DBName": "dev", 
       "BackupProgressInMegaBytes": 22.0, 
       "ClusterCreateTime": "2016-09-06T15:56:08.170Z", 
       "RestorableNodeTypes": [ 
        "dc1.large" 
       ], 
       "EncryptedWithHSM": false, 
       "ClusterIdentifier": "dev-cluster", 
       "SnapshotCreateTime": "2016-09-06T16:00:25.595Z", 
       "AvailabilityZone": "us-west-2c", 
       "NodeType": "dc1.large", 
       "Encrypted": false, 
       "ElapsedTimeInSeconds": 3, 
       "SnapshotType": "manual", 
       "Port": 5439, 
       "SnapshotIdentifier": "thismorning" 
     } 
    ] 
} 

文字列「ClusterIdentifier」で配列をインデックスできません。

+2

フィルタの開始は、おそらく '.Snapshots [] | ... ' –

+0

@JeffMercadoこれを答えとして書くと、正しいものとしてマークすることができます。ありがとう! – RagePwn

+0

この場合、単純なタイプミスとして閉じるのがより適切だと思います。そうでなければ、あなたは自信を持って歓迎します。 –

答えて

0

これはいかがですか?

jq '.[]|map(select(.ClusterIdentifier=="dev-cluster")) 
    |max_by(.SnapshotCreateTime)|.SnapshotIdentifier' 
関連する問題