我运行了一个aws
命令,结果如下:
[root@webserver-02 test]# aws ec2 describe-volumes --volume-ids vol-0be41aaca50a1d4d2 --profile donald 2> /dev/null|
jq -r '.Volumes[]|{"Tags":(.Tags | map({(.key//.Key): (.value//.Value)}) | add), VolumeId:.VolumeId,SnapshotId:.SnapshotId, Volumesize:.Size, CreateTime:.CreateTime, State:.State,"Instances": [.Attachments[0].InstanceId] }'
,结果如下:
{
"Tags": {
"Name": "4d2",
"c": "c",
"a": "a",
"b": "b"
},
"VolumeId": "vol-0be41aaca50a1d4d2",
"SnapshotId": "snap-0be43cb27ae60c978",
"Volumesize": 8,
"CreateTime": "2018-09-20T02:24:21.067Z",
"State": "in-use",
"InstanceId": "i-016c1d0448d6917f6"
}
好。我想显示 InstanceId json如下:
{
"Tags": {
"Name": "4d2",
"c": "c",
"a": "a",
"b": "b"
},
"VolumeId": "vol-0be41aaca50a1d4d2",
"SnapshotId": "snap-0be43cb27ae60c978",
"Volumesize": 8,
"CreateTime": "2018-09-20T02:24:21.067Z",
"State": "in-use",
"Instances": [{
"InstanceId": "i-016c1d0448d6917f6"
}]
}
我正在jq
外壳中使用bash
。
答案 0 :(得分:1)
您可以使用以下jq过滤器:
jq '.+{"Instances":[{InstanceId}]}|del(.InstanceId)' file
这会使用Instances
的值将对象InstanceId
添加到当前JSON数据中。
然后,它删除对象根目录上的InstanceId
。