Как получить последнюю запись в объекте - PullRequest
2 голосов
/ 08 апреля 2020

Я работаю с JQ 1.6, чтобы получить последнюю запись в объекте. Это должно работать так:

data='{ "1": { "a": "1" }, "2": { "a": "2" }, "3": { "a": "3" } }'
result=`echo $data | jq 'myfilter'`
echo $result
{ "3": { "a": "3" } }

Я пробовал эти фильтры:

jq '. | last' # error: Cannot index object with number

Как я могу сказать jq процитировать число ?

jq '. | to_entries | last' # { "key": "3", "value": { "a": "3" } }

Полагаю, я мог бы решить эту проблему путем объединения записей ключа и значения. Есть ли более простой способ?

Учебное пособие и руководство не помогли. Никакой радости на ТАК тоже.

1 Ответ

4 голосов
/ 08 апреля 2020

Вы можете использовать следующее:

jq 'to_entries | [last] | from_entries'

Попробуйте здесь .

Мы не можем использовать with_entries(last), потому что last возвращает один элемент и from_entries требуется массив, следовательно, конструкция [...] выше.

...