Sim*_*ite 4 bash bash-scripting
我正在尝试在我的 bash 脚本中使用jq 解析器,但我对它的工作方式感到困惑,有人可以解释一下我做错了什么吗?
这是来自外部服务的原始文件,我需要从中获取value
:
root@test ~ # cat test.json
{"sensors":[{"id":34585,"value":-3.06,"time":1457031003}]}
Run Code Online (Sandbox Code Playgroud)
尝试将其发送至jq
:
root@test ~ # cat narod.json | jq
{
"sensors": [
{
"id": 34585,
"value": -3.06,
"time": 1457031003
}
]
}
Run Code Online (Sandbox Code Playgroud)
试图获得sensors
:
root@test ~ # cat narod.json | jq '.sensors'
[
{
"id": 34585,
"value": -3.06,
"time": 1457031003
}
]
Run Code Online (Sandbox Code Playgroud)
试图value
从sensors
:
root@test ~ # cat narod.json | jq '.sensors.value'
jq: error (at <stdin>:0): Cannot index array with string "value"
Run Code Online (Sandbox Code Playgroud)
小智 5
正如评论中所讨论的,在这种特定情况下,您应该使用:
jq sensors[].value
Run Code Online (Sandbox Code Playgroud)
这是因为您需要告诉jq
期待一个数组(由 表示[
]
)。这实际上是在说,“在层次结构中的下一个级别进行搜索”。
通常,当您[
在 json 文件中遇到数组 ( ) 时,您应该在查询中提供:jq array_name[].object_in_array
将返回object_in_array
.
归档时间: |
|
查看次数: |
7370 次 |
最近记录: |