【问题标题】:Get formatted data in shell script which is read from file containing JSON data获取从包含 JSON 数据的文件中读取的 shell 脚本中的格式化数据
【发布时间】:2014-10-10 08:42:17
【问题描述】:

编写一个 shell 脚本,从原始 json 数据中自动获取名称、当前和最新可用版本的列表。

我正在尝试使用 shell 脚本格式化存储在文件中的 JSON 数据。我尝试使用JQ 命令行 JSON 解析器。

我想在脚本中获取格式化的 JSON 数据。它们是 JQ 中为相同场景提供的高级选项。我无法正常使用它。

示例:包含以下 JSON 的文件

{
  "endpoint": {
    "name": "test-plugin",
    "version": "0.0.1"
  },
  "dependencies": {
    "plugin1": {
      "main": {
        "name": "plugin1name",
        "description": "Dummy text"
      },
      "pkgMeta": {
        "name": "plugin1name",
        "version": "0.0.1"
      },
      "dependencies": {},
      "versions": [
        "0.0.5",
        "0.0.4",
        "0.0.3",
        "0.0.2",
        "0.0.1"
      ],
      "update": {
        "latest": "0.0.5"
      }
    },
    "plugin2": {
      "main": {
        "name": "plugin2name",
        "description": "Dummy text"
      },
      "pkgMeta": {
        "name": "plugin2name",
        "version": "0.1.1"
      },
      "dependencies": {},
      "versions": [
        "0.1.5",
        "0.1.4",
        "0.1.3",
        "0.1.2",
        "0.1.1"
      ],
      "update": {
        "latest": "0.1.5"
      }
    }

   }
}

尝试以格式获取结果

[{name: "plugin1name", 
    c_version: "0.0.1", 
    n_version: "0.0.5"
 },
 {name: "plugin2name", 
    c_version: "0.1.1", 
    n_version: "0.1.5"}]

有人可以提出任何建议吗?

【问题讨论】:

    标签: json shell jq


    【解决方案1】:

    您的 json 文件在以下位置无效:.dependencies.pkgMeta.version

    修复你的 json 文件后,试试这个命令:

    jq '
      .dependencies |
        to_entries |
          map(.value |
            {
              name: .main.name,
              c_version: .pkgMeta.version,
              n_version: .update.latest
            }
          )' input.json
    

    结果是:

    [
      {
        "name": "plugin1name",
        "c_version": "0.0.1",
        "n_version": "0.0.5"
      },
      {
        "name": "plugin2name",
        "c_version": "0.1.1",
        "n_version": "0.1.5"
      }
    ]
    

    【讨论】:

      猜你喜欢
      • 2021-10-22
      • 2017-08-06
      • 1970-01-01
      • 2023-03-31
      • 2016-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-27
      相关资源
      最近更新 更多