初学者用jq解析 - 不能用字符串索引数组

时间:2017-07-14 21:18:34

标签: json bash shell api jq

当我执行基本的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”索引数组 - 有关为什么会发生这种情况的想法吗?

1 个答案:

答案 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"
]