【发布时间】:2015-06-22 04:17:42
【问题描述】:
如果你有这样的 csv 数据集:
name, age, gender
john, 20, male
jane, 30, female
bob, 25, male
你能做到吗:
[ {"name": "john", "age": 20, "gender": "male"},
{"name": "jane", "age": 30, "gender": "female"},
{"name": "bob", "age": 25, "gender": "male"} ]
只使用 jq?
我发现this 文章显示了我正在尝试做的事情,但它使用标题字段到值的“手动”映射。我不需要/不想重命名标题字段并且有很多。我也不希望每次布局更改时都必须更改脚本/命令。
是否可以动态提取标题,然后将它们与 jq one-liner 的值结合起来?
【问题讨论】:
-
您要求做的事情毫无意义。
jq是一个以json为输入并生成输出的工具。 csv 不是 json。你不能指望这个工具来处理它,这不是它的用途。您需要使用可以处理 csv 的工具或其他脚本语言。 -
而不是试图强制
jq这样做,它可以用一个几乎微不足道的 shell/sed 脚本来完成,例如基于stackoverflow.com/questions/4286469/… -
我是OP引用的文章的作者。虽然我提供的示例对于快速脏的 jq 项目很有用,但它不是很健壮。有一些很好的 CSV 工具可以使用,我会推荐其中的一种,例如:johnkerl.org/miller/doc(比如 CSV 的 jq)或者这个 NPM 包 npmjs.com/package/csv2json 或者这个 gem rubygems.org/gems/csv2json/versions/0.3.0