当我执行基本的jq时,这是输出的片段,我想要得到的是分区的数据。
jq .
[
{
"partitions": [
"name@website
],
"os_pid": "20458",
"fd_used": 20,
"fd_total": 1024,
"sockets_used": 2,
"sockets_total": 829,
"mem_used": 41128152,
当我 jq'.partitions'时,我明白了 不能用字符串“partitions”索引数组 - 有关为什么会发生这种情况的想法吗?
答案 0 :(得分:2)
您有一个数组,其中每个元素都有一个partitions
字段。你要求获得“分区”,但你没有说明数组中的哪个或哪些元素。
这是一个完整的,自包含的文件:
[
{
"partitions": [ "name@website" ]
},
{
"partitions": [ "more" ]
}
]
你的表达式会产生你说的错误:
$ jq '.partitions' file
jq: error (at file:8): Cannot index array with string "partitions"
您可以为第一个元素获取“分区”:
$ jq '.[0].partitions' file
[
"name@website"
]
或者每个元素:
$ jq '.[].partitions' file
[
"name@website"
]
[
"more"
]
或者将每个元素的所有分区加入到一个列表中:
$ jq 'map(.partitions) | add' file
[
"name@website",
"more"
]