使用jq在json字典中首次出现元素

使用jq在json字典中首次出现元素,json,jq,Json,Jq,我有以下建议: $echo'{“格式id”:“250”{“格式id”:“18”}{“格式id”:“140”}{“格式id”:“18”}{“格式id”:“244”}jq。 { “格式id”:“250” } { “格式id”:“18” } { “格式标识”:“140” } { “格式id”:“18” } { “格式标识”:“244” } 我设法提取了它等于“18”的格式ids: $echo'{“格式id”:“250”{“格式id”:“18”}{“格式id”:“140”}{“格式id”:“18”}

我有以下建议:

$echo'{“格式id”:“250”{“格式id”:“18”}{“格式id”:“140”}{“格式id”:“18”}{“格式id”:“244”}jq。
{
“格式id”:“250”
}
{
“格式id”:“18”
}
{
“格式标识”:“140”
}
{
“格式id”:“18”
}
{
“格式标识”:“244”
}
我设法提取了它等于“18”的
格式id
s:

$echo'{“格式id”:“250”{“格式id”:“18”}{“格式id”:“140”}{“格式id”:“18”}{“格式id”:“244”}jq-r”选择(.format_id==“18”)'
{
“格式id”:“18”
}
{
“格式id”:“18”
}
我想从中提取第一次出现的
format\u id

因此,我尝试了给出的解决方案,但没有一个有效,因为我想它们需要以某种方式适应我的输入数据:

$echo'{“format_id”:“18”}{“format_id”:“18”}'| jq'[.]| select(.format_id)][0]'
jq:错误(位于:1):无法索引字符串为“format\u id”的字符串
jq:错误(位于:1):无法索引字符串为“format\u id”的字符串
$echo'{“format_id”:“18”}{“format_id”:“18”}'| jq'(map(select(.format_id))| first)'
jq:错误(位于:1):无法索引字符串为“format\u id”的字符串
jq:错误(位于:1):无法索引字符串为“format\u id”的字符串
$echo'{“format_id”:“18”}{“format_id”:“18”}'| jq'(第一个(.[]|选择(.format_id)))
jq:错误(位于:1):无法索引字符串为“format\u id”的字符串
jq:错误(位于:1):无法索引字符串为“format\u id”的字符串
$echo'{“format_id”:“18”}{“format_id”:“18”}“jq”映射(select(.format_id))|[0]'
jq:错误(位于:1):无法索引字符串为“format\u id”的字符串
jq:错误(位于:1):无法索引字符串为“format\u id”的字符串

您能帮助我吗?

如果您的jq具有
输入
,则最好将其与-n命令行选项和以下jq筛选器结合使用:

first(inputs | select(.format_id =="18"))
如果您的jq没有
输入
。。。然后您必须使用-s命令行选项,例如,使用以下过滤器:

first(.[] | select(.format_id =="18"))

在这里,最好使用
输入
,因为它需要更少的RAM。

非常感谢!我先尝试了这个
(选择(.format_id==“18”)
,但没有成功。我希望我能多了解一点
jq
。我读过官方的教程和手册,但它没有说太多关于
输入
(只有两行文本没有
输入
用例示例)。网上有很多教程。我真的不知道该读哪一本。我读过一些书,但没有一本真正让我在处理纯词典数据时对
jg
有了更好的理解。根据你的说法,我在哪里可以找到“非常好的”
jq
教程?@SebMa你像
jq-n(select(.format_id==“18”))”file.json一样运行它,对吧?SebMa-碰巧,我不久前写的介绍中有一整节专门讨论
输入
:@oguzismail Nope,我没有使用
jq-n
,但是
jq
@peak再次感谢您的帮助。你能在第一个命令前面加上
。|jq-n'
,在第二个命令前面加上
。|jq-s'
,更新你的答案吗?这样对于像我这样的
jq
新手:)顺便问一句:你能把你的
输入文件链接添加到你的答案吗?但是如果你没有时间,请告诉我,我马上就做。