, хотя вопрос был специфичным для jq, позвольте мне предложить альтернативный способ, используя утилиту unix: jtc
.jtc
выполняет рекурсивный поиск по умолчанию, поэтому легко выбрать name
:
bash $ <file.json jtc -w'<name>l'
"137.txt"
bash $
l
в конце пути прохождения инструктирует выполнять поиск только среди меток (ключей)(в противном случае, по умолчанию будут выполняться поиск только по строковым значениям)
путь обхода (-w...
) может быть расширен для выбора любого родителя из найденных элементов, например:
bash $ <file.json jtc -w'<name>l [-1]'
{
"id": "123456789",
"name": "137.txt"
}
bash $
[-1]
будет обращаться к непосредственному родителю, [-2]
- к родительскому элементу родителя и т. Д.
и снова копать найденного родителя (либо с помощью поиска, либочерез подписку, как показано ниже любое количество раз):
bash $ <file.json jtc -w'<name>l [-1] [id]'
"123456789"
bash $
jtc
руководство пользователя можно найти здесь: https://github.com/ldn-softdev/jtc/blob/master/User%20Guide.md