【问题标题】:why not print csv headers?为什么不打印 csv 标头?
【发布时间】:2021-05-27 19:21:59
【问题描述】:

CentOS, jq

https://stedolan.github.io/jq/manual/

我想将 json 导出到 csv。 为此,我使用工具 jq

这里是json的例子。

{
  "page": {
    "id": "kctbh9vrtdwd",
    "name": "GitHub",
    "url": "https://www.githubstatus.com",
    "time_zone": "Etc/UTC",
    "updated_at": "2021-05-27T16:56:02.461Z"
  },
  "status": {
    "indicator": "none",
    "description": "All Systems Operational"
  }
}

我过去了

curl -s https://www.githubstatus.com/api/v2/status.json

这里将json转换为csv。

curl -s https://www.githubstatus.com/api/v2/status.json | jq -r '.page | [.id, .name] | @csv'

结果如下:

"kctbh9vrtdwd","GitHub"

但为什么不打印 csv 标头?

【问题讨论】:

标签: csv centos jq


【解决方案1】:

作为其中一个 cmets 中的链接提供的 SO 页面上有很多噪音, 所以这里有两个 safe jq-only 解决方案(“安全”的意思是输入 JSON 中键的顺序无关紧要):

  1. 手动添加标题
["id", "name"],
(.page | [.id, .name])
| @csv
  1. 根据相关列的规范包含标题
["id", "name"] as $headers
| $headers, (.page | [.[$headers[]]])
| @csv

【讨论】:

  • 我试试这个 "curl -s githubstatus.com/api/v2/status.json | jq ["id", "name"], '.page | [.id, .name] | @csv'" 但得到错误: jq:错误:语法错误,在 处出现意外的 $end(Unix shell 引用问题?),第 1 行:[id, jq: 1 compile error
  • 您的尝试缺少括号。
  • 我试试这个:"curl -s githubstatus.com/api/v2/status.json | jq ["id", "name"], (.page | [.id, .name] ) | @csv" ,但得到错误 bash: syntax error near unexpected token `('
  • 你要么需要学习如何输入 bash 命令,要么将 jq 程序放入一个文件并使用 -f 命令行选项。
猜你喜欢
  • 2023-01-11
  • 1970-01-01
  • 2021-11-04
  • 2021-12-09
  • 2022-01-25
  • 2016-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多