Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 如何使用JMESPath对AWS CLI中的JSON输出进行排序_Sorting_Aws Cli_Jmespath - Fatal编程技术网

Sorting 如何使用JMESPath对AWS CLI中的JSON输出进行排序

Sorting 如何使用JMESPath对AWS CLI中的JSON输出进行排序,sorting,aws-cli,jmespath,Sorting,Aws Cli,Jmespath,我尝试通过ImageId对AWS CLI中的输出进行排序,并执行下面的命令 aws ec2描述图像——配置文件XXXXXXXXX\ --筛选器名称=标记:名称,值=备份*某些字符串*\ --查询“图像[*].[标记[?键=='Name'].值[]|[0],图像ID]” 输出为: [ [ "Backup-20191215T174530Z-utc-some-string", "ami-004" ], [ "Backup-2019

我尝试通过
ImageId
对AWS CLI中的输出进行排序,并执行下面的命令

aws ec2描述图像——配置文件XXXXXXXXX\ --筛选器名称=标记:名称,值=备份*某些字符串*\ --查询“图像[*].[标记[?键=='Name'].值[]|[0],图像ID]”

输出为:

[
    [
        "Backup-20191215T174530Z-utc-some-string",
        "ami-004"
    ],
    [
        "Backup-20191219T174631Z-utc-some-string",
        "ami-002"
    ],
    [
        "Backup-20191208T174534Z-utc-some-string",
        "ami-001"
    ],
    [
        "Backup-20191222T174530Z-utc-some-string",
        "ami-003"
    ],
    [
        "Backup-20191221T174530Z-utc-some-string",
        "ami-005"
    ]
]

我发现JMESPath的
sort\u by
函数可能是一个解决方案,但这太难理解了。

在我下面的解决方案中,我的想法是,首先根据
ImageId
对输出进行排序,然后应用投影

aws ec2 describe-images --filter Name=tag:Environment,Values=Staging --output json --query "(sort_by(Images[], &ImageId))[*].[ImageId, Tags[?Key=='Environment'].Value | [0]]"


这对我来说很好<需要代码>&(表达式类型运算符)

我尝试了您的代码,但它在函数sort_by()中返回了一个错误
,值的类型无效:['Backup-20191215T174530Z-xxxxxxxxx','ami abcdefghijklmn',应为:['string','number',],收到:“null”
其他
[]
也返回相同类型的错误。我想实现的是根据标记值的名称对输出进行排序。我正在进行一次路途旅行,刚刚想出了这个,请尝试一下,否则我会尝试一些东西。让它工作起来,应用你的标记名称,看看它是否工作。我找到了一个解决方案,所以添加了我的答案。谢谢你帮助我。
aws ec2 describe-images --profile xxxxxxxxxx \
--filter Name=tag:Name,Values=Backup*some-string* \
--query "sort_by(Images[*].[Tags[?Key=='Name'].Value[]|[0],ImageId], &[0]"
aws ec2 describe-images --profile xxxxxxxxxx \
--filter Name=tag:Name,Values=Backup*some-string* \
--query "Images[*].[Tags[?Key=='Name'].Value[]|[0],ImageId] | sort_by(@, &[0])"