将多个jq命令合并为一个?

  • 本文关键字:一个 合并 jq 命令 jq
  • 更新时间 :
  • 英文 :


我使用以下命令从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

相关内容

最新更新