JQ从相关键搜索的键中拉取值
JQ pull value from key searched by related key
我 bash 把我的头靠在墙上 - 目标是从相关
搜索的键中提取值
JSON 片段
{
"block": {
"000545342981": [
{
"CODE": "xdxd3456532fok234sss0"
},
{
"STATE": "COMPLETE"
}
],
"000545341211": [
{
"CODE": "xdff3678223frt244swe4"
},
{
"STATE": "RUNNING"
}
]
}}
我希望检索每个帐户的 CODE
值
即
000545342981
我希望 xdxd3456532fok234sss0
返回并且
xdff3678223frt244swe4
对于 000545341211
然后放在bash中作为
accounts+=(
["000545342981"]=xdxd3456532fok234sss0
["000545341211"]=xdff3678223frt244swe4
)
到目前为止
我已经退回了账户
jq --slurp '.?|.[][]|keys' | jq -r '.[]'
然后我尝试了 jq --arg code "ACCOUNT" 'select ( ."block".key==$code) | ."block".$stack."CODE"'
----> 没有错误 :/ 所以怀疑它可能找不到任何东西
这会有点用 ."block"."000545341211"[]."CODE"
但我知道我不能在 jq 中为每个输入一个 var,所以需要 arg 输入(除非我错了)
我认为是 select ( ."block".key==$code)
?我需要什么:(
如果每个账户只包含一个代码,您可以这样做:
#!/usr/bin/env bash
declare -A accounts
while read account code; do
accounts[$account]=$code
done < <(jq -r '.block |
to_entries[] |
"\(.key) \(.value[0].CODE)"' input.json)
declare -p accounts
我 bash 把我的头靠在墙上 - 目标是从相关
搜索的键中提取值JSON 片段
{
"block": {
"000545342981": [
{
"CODE": "xdxd3456532fok234sss0"
},
{
"STATE": "COMPLETE"
}
],
"000545341211": [
{
"CODE": "xdff3678223frt244swe4"
},
{
"STATE": "RUNNING"
}
]
}}
我希望检索每个帐户的 CODE
值
即
000545342981
我希望 xdxd3456532fok234sss0
返回并且
xdff3678223frt244swe4
对于 000545341211
然后放在bash中作为
accounts+=(
["000545342981"]=xdxd3456532fok234sss0
["000545341211"]=xdff3678223frt244swe4
)
到目前为止
我已经退回了账户
jq --slurp '.?|.[][]|keys' | jq -r '.[]'
然后我尝试了 jq --arg code "ACCOUNT" 'select ( ."block".key==$code) | ."block".$stack."CODE"'
----> 没有错误 :/ 所以怀疑它可能找不到任何东西
这会有点用 ."block"."000545341211"[]."CODE"
但我知道我不能在 jq 中为每个输入一个 var,所以需要 arg 输入(除非我错了)
我认为是 select ( ."block".key==$code)
?我需要什么:(
如果每个账户只包含一个代码,您可以这样做:
#!/usr/bin/env bash
declare -A accounts
while read account code; do
accounts[$account]=$code
done < <(jq -r '.block |
to_entries[] |
"\(.key) \(.value[0].CODE)"' input.json)
declare -p accounts