【问题标题】:Get data from a JSON output using 'jq' [duplicate]使用“jq”从 JSON 输出中获取数据 [重复]
【发布时间】:2018-09-08 10:07:22
【问题描述】:

我有以下 JSON 输出:

{
  "201110131738QP27N": {
    "parent": 17,
    "name": "CentralServer",
    "status": "Active",
    "count": 6
  },
  "201803271459ICV69": {
    "name": "subaccount1",
    "status": "Active",
    "count": 1
  },
  "2018032715008ZM2G": {
    "name": "subaccount2",
    "status": "Active",
    "count": 1
  },
  "201803281536PSKR4": {
    "name": "Este e um teste",
    "status": "Active"
  }
}

我只尝试获取以下数据:

201110131738QP27N
201803271459ICV69
2018032715008ZM2G
201803281536PSKR4

为了得到想要的数据,我正在尝试使用jq命令,但是目前还没有成功。

【问题讨论】:

  • 嗨,欢迎来到 Stack Overflow。您提到您使用jq 尝试了此任务,但您没有提供您的尝试。您能否更新您的问题以显示您的尝试?

标签: json bash key jq


【解决方案1】:

要获得不带数组的原始输出,请使用 |.[] 解包

jq --raw-output 'keys | .[]'  input.json

生产

201110131738QP27N
201803271459ICV69
2018032715008ZM2G
201803281536PSKR4

或者更简单的写成jq --raw-output 'keys[]'

【讨论】:

  • 完美运行,非常感谢!
  • 有什么办法可以输入密钥名称的内容,jq 给我 KeyID?例如:我在命令上通知“subaccount1”,jq 返回我 201803271459ICV69"
  • @RafaelBrianeziDaSilva:你需要努力提出不同的问题
【解决方案2】:

使用jqkeys builtin function

假设您的输入 JSON 存储在文件 input.json 中:

$ cat input.json | jq 'keys'

产生:

[
  "201110131738QP27N",
  "201803271459ICV69",
  "2018032715008ZM2G",
  "201803281536PSKR4"
]

【讨论】:

  • 注意keys对键名进行排序;如果您想要未排序的列表,请改用keys_unsorted
猜你喜欢
  • 2017-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-06
  • 2021-11-29
  • 1970-01-01
  • 2021-02-15
相关资源
最近更新 更多