【发布时间】:2020-09-08 21:43:03
【问题描述】:
我正在使用带有 jq 的 select 函数来解析列表中包含特定值的项目。我希望结果输出是一个 json 列表,但 jq 分别给了我对象:
例子:
$ a='{
"FOO": {
"name": "Donald",
"location": "Stockholm"
},
"BAR": {
"name": "Walt",
"location": "Stockholm"
},
"BAZ": {
"name": "Jack",
"location": "Whereever"
}
}'
$ echo $a | jq '.[] | select(.location=="Stockholm")'
{
"name": "Donald",
"location": "Stockholm"
}
{
"name": "Walt",
"location": "Stockholm"
}
相反,我希望输出是这样的 json 列表:
[
{
"name": "Donald",
"location": "Stockholm"
},
{
"name": "Walt",
"location": "Stockholm"
}
]
我怎样才能用 jq 做到这一点?
【问题讨论】:
-
你是否已经尝试用括号括起来
echo $a | jq '[ .[] | select(.location=="Stockholm") ]' -
顺便说一句,
echo $a是胃灼热的常见原因。总是引用你的扩展:echo "$a",以避免I just assigned a variable, butecho $variableshows something else!