jq:按名称在未知输入结构深处搜索属性并打印路径

Adr*_*May 5 path jq

标题说明了一切:jq 程序接受一个输入 JSON 文档,我对其结构只是模糊熟悉,并且我希望它打印其中具有特定名称的所有属性的路径。

pea*_*eak 2

假设您想要查找具有名为“b”的键的对象的路径。一种方法是使用路径(对象),如下所示:

def data: {a:{b:1,c:{b:2}}};

data
| paths(objects | has("b") )
Run Code Online (Sandbox Code Playgroud)

或者稍微更有效:

data
| paths
| select( .[-1] == "b" )
| .[:-1]
Run Code Online (Sandbox Code Playgroud)

调用:jq -n -c -f 程序.jq

输出:

["a"]
["a","c"]
Run Code Online (Sandbox Code Playgroud)