You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

对两个文件运行相同jq管道并对比结果,能否简化为单条jq命令?

单条jq实现Schema版本标签差集查询

你原来的命令作用是提取9.0版本schema中存在、但13.0版本中不存在的rdfs:label值,完全可以简化为单条jq命令,无需额外依赖comm、进程替换和排序流程。

简化后命令

jq -n '
# 先读取13.0版本的所有非空label存入哈希集合
input | .["@graph"][]."rdfs:label" | select(. != null) as $label_v13 
| reduce $label_v13[] as $k ({}; .[$k] = 1) as $exist_set
# 再读取9.0版本的label,筛选出不在集合中的值输出
| input | .["@graph"][]."rdfs:label" | select(. != null and in($exist_set) | not)
' 13.0/schemaorg-all-http.jsonld 9.0/schemaorg-all-http.jsonld

命令说明

  • -n参数禁止jq默认读取第一个输入自动处理,方便手动控制两个文件的读取顺序
  • 先读取13.0版本文件,将所有非空rdfs:label存入一个键为label值的对象作为哈希集合,查找效率远高于数组遍历
  • 再读取9.0版本文件,逐个提取rdfs:label,筛选出不在上述集合中的值直接输出
  • 省略了两次排序和comm调用,大文件场景下执行效率提升明显

内容的提问来源于stack exchange,提问作者chx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 23:18:01