我有以下 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"))