看起来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"
}
谢谢!
答案 0 :(得分:1)
使用您引用的SO页面中给出的hashJoin的定义,可以轻松解决该问题。
如果您的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,则棘手的问题是将两个文件分别作为数组读取。这是一种假设bash的方法:
jq -n --argfile f1 <(jq -s . file1.json) --argfile f2 <(jq -s . file2.json) -f join.jq
其中join.jq如上。
如果您不能使用bash,则创建临时文件可能最简单。