【发布时间】:2020-06-04 15:54:30
【问题描述】:
我有一个包含六个“发票”对象的 json 文件,每个对象是 140 多行值。我只想查看六个对象中每个对象的几个值。 jq 似乎是一个很有前途的解决方案。
我正在使用jq version 1.5-1-a5b5cbe,它可以通过apt 的常用存储库获得。
我可以做cat stripe-invoices-list.json | jq -C '. | {invoice_id: .data[].id,}' 并且它返回:
{
"invoice_id": "in_1Gq39HFGUwFHXzvlUOGG3Rv4"
}
{
"invoice_id": "in_1GpyM1FGUwFHXzvlio9pfaM9"
}
{
"invoice_id": "in_1GpyHUFGUwFHXzvlHDS727su"
}
{
"invoice_id": "in_1Gpy4HFGUwFHXzvl6k82godp"
}
{
"invoice_id": "in_1GpjNjFGUwFHXzvl880gp0o9"
}
{
"invoice_id": "in_1GSkk7FGUwFHXzvlfWdhcad5"
}
这是有道理的并且可以正常工作。这些是六个发票对象的 ID。一切都很好,虽然只是看到 id 并没有帮助。所以...
我尝试向输出中添加更多数据,但随后会产生冗余甚至不正确的输出:
$ cat stripe-invoices-list.json | jq -C '. | {invoice_id: .data[].id, client: .data[].customer_name,}'
结果:
{
"invoice_id": "in_1Gpy4HFGUwFHXzvl6k82godp",
"client": "client_two"
}
{
"invoice_id": "in_1Gpy4HFGUwFHXzvl6k82godp",
"client": "client_three"
}
{
"invoice_id": "in_1Gpy4HFGUwFHXzvl6k82godp",
"client": "client_four"
}
{
"invoice_id": "in_1Gpy4HFGUwFHXzvl6k82godp",
"client": "client_five"
}
{
"invoice_id": "in_1Gpy4HFGUwFHXzvl6k82godp",
"client": "client_one"
}
{
"invoice_id": "in_1GpjNjFGUwFHXzvl880gp0o9",
"client": "client_one"
}
{
"invoice_id": "in_1GpjNjFGUwFHXzvl880gp0o9",
"client": "client_two"
}
{
"invoice_id": "in_1GpjNjFGUwFHXzvl880gp0o9",
"client": "client_three"
}
{
"invoice_id": "in_1GpjNjFGUwFHXzvl880gp0o9",
"client": "client_four"
}
{
"invoice_id": "in_1GpjNjFGUwFHXzvl880gp0o9",
"client": "client_five"
}
{
"invoice_id": "in_1GpjNjFGUwFHXzvl880gp0o9",
"client": "client_one"
}
{
"invoice_id": "in_1GSkk7FGUwFHXzvlfWdhcad5",
"client": "client_one"
}
{
"invoice_id": "in_1GSkk7FGUwFHXzvlfWdhcad5",
"client": "client_two"
}
{
"invoice_id": "in_1GSkk7FGUwFHXzvlfWdhcad5",
"client": "client_three"
}
{
"invoice_id": "in_1GSkk7FGUwFHXzvlfWdhcad5",
"client": "client_four"
}
{
"invoice_id": "in_1GSkk7FGUwFHXzvlfWdhcad5",
"client": "client_five"
}
{
"invoice_id": "in_1GSkk7FGUwFHXzvlfWdhcad5",
"client": "client_one"
它提供了冗余和混乱的信息。这是多余的,因为in_1GSkk7FGUwFHXzvlfWdhcad5 被多次列出,并且因为一张发票与每个客户相关联而被打乱。
当我在 vim 中打开 stripe-invoices-list.json 文件时,我可以看到发票 ID in_1GSkk7FGUwFHXzvlfWdhcad5 与 client_one 相关联。
任何人都可以提出可能导致此问题的原因,或者我可以采取的任何调试步骤吗?
如何让jq 正确打印?
【问题讨论】: