【发布时间】:2019-09-14 12:01:07
【问题描述】:
我有一个与以下内容非常相似的 JSON 文件:
[
{
"uuid": "832390ed-58ed-4338-bf97-eb42f123d9f3",
"name": "Nacho"
},
{
"uuid": "5b55ea5e-96f4-48d3-a258-75e152d8236a",
"name": "Taco"
},
{
"uuid": "a68f5249-828c-4265-9317-fc902b0d65b9",
"name": "Burrito"
}
]
我试图弄清楚如何使用 JQ 命令行处理器首先找到我输入的 UUID,然后根据该输出找到相关项目的名称。例如,如果我输入 UUID a68f5249-828c-4265-9317-fc902b0d65b9 它应该搜索 JSON 文件,找到匹配的 UUID,然后返回名称 Burrito。我在 Bash 中这样做。我意识到除了 JQ 之外,它可能还需要一些外部逻辑。我会继续考虑它并在这里更新一下。我知道我可以用一种过于复杂的方式来做到这一点,但我知道可能有一种非常简单的 JQ 方法可以在一两行中做到这一点。请帮帮我。
【问题讨论】:
-
为什么这个标记太宽泛了?
-
@Atomiklan - 如果指定的
uuid值出现多次怎么办? -
@Atomiklan,还有一个 alternative 解决方案可用于您的问题中的 JSON 操作 - 基于新的
walk-pathunix 实用程序 jtc:uuid='a68f5249-828c-4265-9317-fc902b0d65b9'; <file.json jtc -w"<$uuid>[-1][name]"乙>。walk-path相当琐碎,但如果您愿意,我可以在单独的答案中详细说明(PS。我是该工具的开发人员)。