我使用以下命令从json文件中提取数据。假设我只保留第一个匹配如果有匹配的话。(如果没有匹配,打印错误)
.[] | select(.[1] | objects."/Type".N == "/Catalog") | .[1]."/Dests"
假设输出是16876。然后,使用以下jq代码提取数据。
.[] | select(.[0] == 16876) | .[1] | to_entries[] | [.key, .value[0], .value[2].F, .value[3].F] | @tsv
这涉及输入json数据的多次传递。这两个jq命令是否可以合并为一个,这样一次输入json数据就足够了?
使用as $dests
将第一个查询分支的结果绑定到名称$dests
,然后在jq
的单个副本中引用第二个分支中的这些结果。
(.[] | select(.[1] | objects."/Type".N == "/Catalog") | .[1]."/Dests") as $dests
| .[] | select(.[0] == $dests) | .[1] | to_entries[] | [.key, .value[0], .value[2].F, .value[3].F] | @tsv