使用jmespath按日期排序

Mio*_*Mio 7 amazon-web-services jmespath

使用json输出:

{
   "Functions":[
      {
         "CodeSha256":"7NBvXXacp9x3aK3cKaI=",
         "FunctionName":"function_1",
         "FunctionArn":"arn:aws:lambda:eu-west-1:1111:function:function_1",
         "LastModified":"2015-02-09T11:35:31.084+0000"
      },
      {
         "CodeSha256":"7NBvXXacKaI=",
         "FunctionName":"function_3",
         "FunctionArn":"arn:aws:lambda:eu-west-1:1111:function:function_3",
         "LastModified":"2015-03-09T11:35:31.084+0000"
      },
      {
         "CodeSha256":"7NBvXXacaK3cKaI=",
         "FunctionName":"function_2",
         "FunctionArn":"arn:aws:lambda:eu-west-1:1111:function:function_2",
         "LastModified":"2015-02-11T11:35:31.084+0000"
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

如何返回按LastModified排序的两个最新函数?

Mio*_*Mio 12

您需要使用reversesort_by第一次.然后[:2]只添加两个记录:

aws lambda list-functions --query "reverse(sort_by(Functions, &LastModified))[:2]"
Run Code Online (Sandbox Code Playgroud)

  • 并非在所有情况下都有效,因为jmespath考虑到此:`“ 215-02-09T11:35:31.084 + 0000”>“ 2015-02-09T11:35:31.084 + 0000”`返回`true`,因此您需要具有相同位数的日期以应用上述方法。 (2认同)
  • @bosskay972 是的,这么晚了,但是 ISO 日期不会都具有相同数量的字符,因此,对于这个问题,答案是正确的吗?您所说的关键是 jmespath 仅按字符串或数字排序。它不按日期排序,但使用 ISO 日期格式字符串排序效果很好。 (2认同)

Ram*_*lam 5

如果需要最后修改的前1个,其名称以'abc'开头

--query "reverse(sort_by([?starts_with(name, 'abc')], &properties.lastModified))[:1]"
Run Code Online (Sandbox Code Playgroud)