我有一个工具可以在每一行输出一个 JSON 记录,我想用 jq
处理它。
输出如下所示:
{"ts":"2017-08-15T21:20:47.029Z","id":"123","elapsed_ms":10}
{"ts":"2017-08-15T21:20:47.044Z","id":"456","elapsed_ms":13}
当我按如下方式将其传递给
jq
时:./tool | jq 'group_by(.id)'
...它输出一个错误:
jq: error (at <stdin>:1): Cannot index string with string "id"
如何让
jq
处理 JSON-record-per-line 数据?
最佳答案
使用 --slurp
(或 -s
)开关:
./tool | jq --slurp 'group_by(.id)'
它输出以下内容:
[
[
{
"ts": "2017-08-15T21:20:47.029Z",
"id": "123",
"elapsed_ms": 10
}
],
[
{
"ts": "2017-08-15T21:20:47.044Z",
"id": "456",
"elapsed_ms": 13
}
]
]
...然后您可以进一步处理。例如:
./tool | jq -s 'group_by(.id) | map({id: .[0].id, count: length})'
关于json - 使用 jq 解析每行 JSON 记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45714384/