# stream should be a stream of dot-paths
def pick(stream):
. as $in
| reduce path(stream) as $a (null;
setpath($a; $in|getpath($a)) );
DATA: simple-nest.json
$ jq 'include "recipes"; pick(.a.d.e)' data/simple-nest.json
{
"a": {
"d": {
"e": 2
}
}
}
DATA: api-extractor.schema.json
$ jq 'include "recipes"; pick(.properties.dtsRollup.type)' data/api-extractor.schema.json
{
"properties": {
"dtsRollup": {
"type": "object"
}
}
}
string pick
def spick($key):
getpath([($key|split(".")[]|select(length > 0))]);