【问题标题】:JQ Join JSON files by keyJQ 按键加入 JSON 文件
【发布时间】:2018-07-10 16:05:07
【问题描述】:

看起来it's 不适用于 jq 1.4,您能否提供任何其他按键连接 JSON 文件的方法? 例如

{
    "key": "874102296-1",
    "que_lat": "40"
}
{
  "key": "874102296-2",
  "que_lat": "406790"
}

{
  "key": "874102296-1",
  "in_time": "1530874104733",
  "latency": "12864258288242"
}
{
  "key": "874102296-2",
  "in_time": "1530874104746"
}

因此,我想要这样的东西:

{
  "key": "874102296-1",
  "in_time": "1530874104733",
  "full_latency": "12864258288242",
  "que_lat": "40"
}
{
  "key": "874102296-2",
  "in_time": "1530874104746",
  "que_lat": "406790"
}

谢谢!

【问题讨论】:

    标签: json file join key jq


    【解决方案1】:

    使用您引用的 SO 页面中给出的 hashJoin 的 def 可以轻松解决该问题。

    使用 jq 1.5 或更高版本的解决方案

    如果你有 jq 1.5 或更高版本,你可以使用这个调用:

    jq -n --slurpfile f1 file1.json --slurpfile f2 file2.json -f join.jq
    

    其中 join.jq 包含 hashJoin 的第二个 def,以及:

    hashJoin($f1; $f2; .key)[]
    

    使用 jq 1.4 的解决方案

    如果您有 jq 1.4,则技巧是将两个文件中的每一个作为数组分别读取。这是假设 bash 的一种方法:

    jq -n --argfile f1 <(jq -s . file1.json) --argfile f2 <(jq -s . file2.json) -f join.jq 
    

    join.jq 同上。

    如果你不能使用 bash,那么创建临时文件可能是最简单的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-07
      • 2023-02-25
      • 1970-01-01
      • 1970-01-01
      • 2018-11-27
      • 1970-01-01
      • 2019-01-27
      • 2020-11-30
      相关资源
      最近更新 更多