我有以下 JSON 文件inp.json
:
{
"x": 0,
"tx": [
{
"id": "a",
"t" : "t for a"
},
{
"id": "b",
"t": "t for b"
}
]
}
我想提取“tx”中键“t”第一次出现的值。
我试过了
jq -r .tx <inp.json | jq -r '[0].t'
但收到错误消息
断言“cb == jq_util_input_next_input_cb”失败:文件“/usr/src/ports/jq/jq-1.6-1.x86_64/src/jq-1.6/src/util.c”,第 371 行,函数:jq_util_input_get_position
更新:我也尝试了变化
... | jq -r '.[0]t'
和
... | jq -r '.[0].t'
但前者给出了错误消息jq: error: syntax error, unexpected IDENT, expecting $end,而后者给出了与我最初尝试相同的错误。
-r
如果输出将被馈送到另一个 JSON 解析器,则不应使用该选项;只有管道中的最后一个jq 应该使用它——否则你可能会将非 JSON 数据输入到第二个 jq 实例中。您的最后一个示例
.[0].t
似乎是正确的,并且适用于 jq 1.6。但这可以简化为单个 jq 调用,首先增量为:
然后最后到: