[
{
"key": "@timestamp",
"value": "2024-08-21 03:02:57.871"
},
{
"key": "@message",
"value": "Aug 21, 2024 1:00:11 PM AEST INFO [com.boomi.util.LogUtil doLog] Node is using valid java"
},
{
"key": "@timestamp",
"value": "2024-08-21 03:02:42.332"
},
{
"key": "@message",
"value": "Aug 21 13:02:37 ip-10-250-122-60 auditd[3013]: Audit daemon rotating log files"
}
]
如何使用 jq 将 JSON 转换为下面的 JSON
[
{
"@timestamp": "2024-08-21 03:02:57.871",
"@message": "Aug 21, 2024 1:00:11 PM AEST INFO [com.boomi.util.LogUtil doLog] Node is using valid java"
},
{
"@timestamp": "2024-08-21 03:02:42.332",
"@message": "Aug 21 13:02:37 ip-10-250-122-60 auditd[3013]: Audit daemon rotating log files"
}
]
仅使用记录中的函数
jq
,您首先可以像这样将数组中的条目配对:然后映射
from_entries
到新数组的每个条目:另一种方法不需要以特殊方式对原始数组进行索引,而是按键对数组的条目进行分组,以将
@message
和@timestamp
条目彼此分开。然后,您可以像以前一样transpose
对生成的分组数组和映射进行操作:from_entries
这依赖于
group_by()
不改变具有相同键的条目之间的顺序(测试表明jq
采用了稳定的排序算法,所以这应该没问题)。输入几乎符合 要求的形式
from_entries
,它要求输入是具有key
和value
字段的对象数组。我们只需要对它们进行分组,这篇 Stack Overflow 帖子将我们引向了未记录的内置_nwise
。因此我们只需要:请注意,链接的帖子(以及那里的其他答案)有改进的版本
_nwise
,您可能需要查看一下。