使用 JQ 命令行处理器搜索和提取值
Search and extract value using JQ command line processor
我有一个 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,然后 return 名称 Burrito。我在 Bash 中这样做。我意识到除了 JQ 之外,它可能还需要一些外部逻辑。我会继续考虑它并稍后在这里更新。我知道我可以用一种过于复杂的方式来做到这一点,但我知道可能有一种非常简单的 JQ 方法可以在一两行中做到这一点。请帮助我。
您可以使用 select:
jq -r --arg query Burrito '.[] | select( .name == $query ) | .uuid ' tst.json
我有一个 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,然后 return 名称 Burrito。我在 Bash 中这样做。我意识到除了 JQ 之外,它可能还需要一些外部逻辑。我会继续考虑它并稍后在这里更新。我知道我可以用一种过于复杂的方式来做到这一点,但我知道可能有一种非常简单的 JQ 方法可以在一两行中做到这一点。请帮助我。
您可以使用 select:
jq -r --arg query Burrito '.[] | select( .name == $query ) | .uuid ' tst.json