JQ按键加入JSON文件

时间:2018-07-10 16:05:08

标签: json file join key jq

看起来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"
}

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

如果您的jq 1.5或更高版本,则可以使用以下调用:

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

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

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,则创建临时文件可能最简单。