2014-10-10 55 views
0

编写一个shell脚本以自动从原始json数据获取名称列表,当前和最新可用版本。从包含JSON数据的文件中读取shell脚本中的格式化数据

我想格式化使用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"}] 

有人建议可以什么?

回答

0

您的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" 
    } 
] 
+0

由于其工作:) – 2014-10-10 10:40:19