首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在linux中用jq解析工件的json输出

无法在linux中用jq解析工件的json输出
EN

Stack Overflow用户
提问于 2016-12-28 17:11:39
回答 3查看 966关注 0票数 1

在Artifactory中执行此查询之后

代码语言:javascript
复制
/usr/bin/jfrog rt s foo/01_Develop/01_CI/HPCC-Package-*.zip

我有这样的输出:

代码语言:javascript
复制
[Info] Searching artifacts...
[Info] Found 3 artifacts.
[
  {
    "path": "foo/01_Develop/01_CI/HPCC-Package-47.zip"
  },
  {
    "path": "foo/01_Develop/01_CI/HPCC-Package-48.zip"
  },
  {
    "path": "foo/01_Develop/01_CI/HPCC-Package-72.zip"
  }
]

我想按照建议的这里命令获得json数组中的最后一条路径

代码语言:javascript
复制
/usr/bin/jfrog rt s foo/01_Develop/01_CI/HPCC-Package-*.zip | jq .[-1].path

但失败了

解析错误:第1行第6列中无效的数字文字

我不能更改json,因为它是来自工件jfrog工具的输出。

  • 如何修复JQ查询?
  • 还有别的方法可以找到最后一条路吗?

注:我有jq版本1.5

更新:

使用引号,我有一个完全相同的错误:

代码语言:javascript
复制
/usr/bin/jfrog rt s foo/01_Develop/01_CI/HPCC-Package-*.zip | jq '.[-1].path'
/usr/bin/jfrog rt s foo/01_Develop/01_CI/HPCC-Package-*.zip | jq ".[-1].path"
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-12-28 18:28:46

为了记录在案,这里有一个只使用jq的解决方案,它假定只有两行非JSON:

代码语言:javascript
复制
... | jq -n -R -r '[inputs][2:] | join("") | fromjson[-1]' 
{
  "path": "foo/01_Develop/01_CI/HPCC-Package-72.zip"
}
票数 1
EN

Stack Overflow用户

发布于 2016-12-29 08:56:13

正如前面的答案中提到的,发生此错误是因为JFrog CLI的输出不是纯JSON。

您可能希望将JFROG_CLI_LOG_LEVEL环境变量设置为ERROR,以便命令不会提示其他消息。

有关更多详细信息,请阅读JFrog CLI .

票数 4
EN

Stack Overflow用户

发布于 2016-12-28 17:43:51

你的艺术输出不是纯粹的json..。你需要移除那些非json部件。假设我们只需要跳过前两行,我们就可以用尾跳过它们。

代码语言:javascript
复制
/usr/bin/jfrog rt s foo/01_Develop/01_CI/HPCC-Package-*.zip | tail -n +3 | jq '.[-1].path'
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41366699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档