Bash jq如何获取对象中的最后一个条目

Bash jq如何获取对象中的最后一个条目,bash,jq,Bash,Jq,我正在使用JQ1.6获取对象中的最后一个条目。它应该是这样工作的: data='{ "1": { "a": "1" }, "2": { "a": "2" }, "3": { "a": "3" } }' result=`echo $data | jq 'myfilter'` echo $result { "3": { "a": "3" } } 我试过这些过滤器: jq'最后一个'#错误:无法为编号为的对象编制索引 我怎样才能让jq报出号码 jq'到| u条目|最后的#{“键”:“3”,“值”:{

我正在使用JQ1.6获取对象中的最后一个条目。它应该是这样工作的:

data='{ "1": { "a": "1" }, "2": { "a": "2" }, "3": { "a": "3" } }'
result=`echo $data | jq 'myfilter'`
echo $result
{ "3": { "a": "3" } }
我试过这些过滤器:

jq'最后一个'#错误:无法为编号为的对象编制索引

我怎样才能让jq报出号码

jq'到| u条目|最后的#{“键”:“3”,“值”:{“a”:“3”}

我想我可以通过连接键和值项来实现这一点。有没有更简单的方法


教程和手册没有帮助。这样也没有乐趣。

您可以使用以下功能:

jq 'to_entries | [last] | from_entries'


我们不能将
与_entries(last)
一起使用,因为
last
返回一个元素,而_entries中的
需要一个数组,因此上面的
[…]
构造与| entries |.-1:][124; from | entries'
@TomFenech谢谢,让我意识到了到|[last]| from_entries同样有效,更容易理解。谢谢Aaron,这很有效!我一直在想人们怎么能这么快解决这些问题!我发现这本手册毫无用处。你知道有一个深入的教程确切地解释了jq是如何工作的吗?@Timm在我看来相当不错,但是很难记住所有的过滤器,所以可能更多的是关于工具的经验问题。这里有很好的信息来描述设计和它是如何工作的。这个问题也值得研究。JSON对象中的“last”难道没有意义吗?该对象是无序集,不需要处理器来维护顺序。您将得到一个有效的随机键/值对,除非您能够保证对象的键/值对总是以相同的顺序排列。这将是JSON对“object”的定义之上的内容;第二个过滤器会返回最后一个条目–到某个点;)如果定义了一个顺序,如“我希望最后排序的键有一个键/值对”,那么它就具有确定性,但除此之外,你只能任由生成JSON的东西摆布,只能希望它不会改变你的顺序。我知道,Benjamin。但是:我只想要最后一个条目,不管它是如何排序的。仅供参考,JSON来自我的Firefox会话中包含选项卡组的一个条目,我正在使用最后一个作为额外条目的模板。所以“last”中的数据并不重要。那么你得到的答案应该有用:)