使用 jq 从文件中的 JSON 数组中提取元素

使用 jq 从文件中的 JSON 数组中提取元素

我有以下 JSON 文件list.json

[
  {
    "$type": "Profile",
    "ReferenceId": "6e374d9e-5bbe-4015-acd7-ae6f04de0db5",
    "Name": " aaa"
  },
  {
    "$type": "Profile",
    "ReferenceId": "5c055f82-696b-48c2-9b7f-a540d48fcd19",
    "Name": " bbb"
  }
 ]

在 bash 中,我想在变量中提取键“ReferenceId”第一次出现的值,其中键“Name”等于“bbb”。

我试过了jq -r ".[] | select(.Name==\"bbb?take=300") | .ReferenceId" < list.json,但没什么效果。我想我需要使用 --slurpfile,但我不知道该怎么做。

提前感谢您的回复。

答案1

忽略损坏的 JSON(最后一个键:值对上不允许使用逗号)并且名称不等于“bbb”(有一个空格):

jq -r 'map(select(.Name == " bbb")) | first | .ReferenceId' list.json

如果你想要“名字包含bbb”然后select(.Name | contains("bbb"))

相关内容