# break out early
def filter($key):
label $out
| foreach inputs as $in ( null;
if . == null
then if $in[0][0] == $key then $in
else empty
end
elif $in[0][0] != $key then break $out
else $in
end;
select(length==2) );
现在可以按如下方式重新构建所需的键值对:
reduce filter($key) as $in ({};
setpath($in[0]; $in[1]) )
2条答案
按热度按时间c3frrgcw1#
在下面,我们假设$key持有我们感兴趣的键。
这里效率的关键是在
--stream
选项产生的流处理完成$key键后终止,为此,我们可以定义一个helper函数,注意它使用inputs
,因此jq的调用必须使用-n命令行选项。现在可以按如下方式重新构建所需的键值对:
示例输入. json
插图
输出
z31licg02#
下面是一个使用jq的--stream选项的简单一行程序: