Json 使用JQ命令行处理器搜索和提取值

Json 使用JQ命令行处理器搜索和提取值,json,jq,lookup,Json,Jq,Lookup,我有一个类似于以下内容的JSON文件: [ { "uuid": "832390ed-58ed-4338-bf97-eb42f123d9f3", "name": "Nacho" }, { "uuid": "5b55ea5e-96f4-48d3-a258-75e152d8236a", "name": "Taco" }, { "uuid": "a68f5249-828c-4265-9317-fc902b0d65b9", "name":

我有一个类似于以下内容的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方法,可以用一两行代码来完成。请帮帮我

您可以使用选择:

jq -r  --arg query Burrito '.[] | select( .name == $query ) | .uuid ' tst.json

知道如何将变量放入墨西哥煎饼中吗?单引号在“$variable”中起作用,但JQ会因为编译错误而崩溃。JQ-r.[].[]选择(.uuid==“$test”)。“name”根据询问的内容,应该是另一种方式,
JQ-r--arg query a68f5249-828c-4265-9317-fc902b0d65b9.[].[]选择(.uuid=$query)|.name'tst.json
是的,您是对的。我只是翻了翻索林的答案。为什么这个标记太宽了?@Atomiklan-如果指定的
uuid
值不止一次出现怎么办?@Atomiklan,在您的问题中还有一个JSON操作的替代解决方案-基于一个新的
walk path
unix实用程序jtc:
uuid='a68f5249-828c-4265-9317-fc902b0d65b9';