使用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
新手:)顺便问一句:你能把你的输入文件链接添加到你的答案吗?但是如果你没有时间,请告诉我,我马上就做。