【发布时间】:2019-05-03 15:58:52
【问题描述】:
我正在使用 jq 在一个非常大的 JSON 文件 (500MB+) 中查找模式,该文件具有以下平面对象结构:
{
"prop1": "large string",
"prop2": "another large string",
"prop3": "yet another large string",
...
}
以下查询运行良好,返回结果不到 15 秒:
jq 'map(select(contains("PATTERN")==true))' largefile.json > res.json
但这会返回一个包含模式的字符串数组,所以我丢失了属性名称。 当我尝试使用 map_values 时,我也可以获取属性名称,如:
jq 'map_values(select(contains("PATTERN")==true))' largefile.json > res.json
查询需要很长时间。
是否有类似 map 的等价查询,它还可以为我提供键:值对?
【问题讨论】:
-
你能和pastebin分享那个json的一部分(如果不是私有的话)吗?
-
对不起,文件是私有的,但是,是的,非常容易重新创建,只需将随机字符串值按顺序添加到道具中。
-
顺便说一下,
map_values(select(...))的行为因 jq 的一个版本而异。
标签: json select jq keyvaluepair