如何使用jq将数据从几个输入json对象复制到一个输出对象?
我有一个文件,其中每一行都是json对象的数组,如:如何使用jq将数据从几个输入json对象复制到一个输出对象?,json,edit,jq,Json,Edit,Jq,我有一个文件,其中每一行都是json对象的数组,如: [ { “ts”:“2017-06-13 16:59:35778” }, { “id”:39, “路径”:“/1497365920809-31368-6D8E756916AE1”, “消息属性”:{ “某些过时数据”:“149736597532”, “更多过时数据”:“20”, “c”:” } }, { “id”:40, “路径”:“/1497365920809-31368-6D8E756916AE1”, “消息属性”:{ “一些过时的数据”
[
{
“ts”:“2017-06-13 16:59:35778”
},
{
“id”:39,
“路径”:“/1497365920809-31368-6D8E756916AE1”,
“消息属性”:{
“某些过时数据”:“149736597532”,
“更多过时数据”:“20”,
“c”:”
}
},
{
“id”:40,
“路径”:“/1497365920809-31368-6D8E756916AE1”,
“消息属性”:{
“一些过时的数据”:“一些文本”,
“需要的数据”:“名称,1,文本,149736597568”
}
}
]
每个数组的第一个对象将始终是我需要的“时间戳”,但下面的对象可能感兴趣,也可能不感兴趣
现在我需要让jq将每一行转换为一个json对象数组,其中包含时间戳和所需的数据,如
[
{
“ts”:“2017-06-13 16:59:35778”,
“id”:40,
“路径”:“/1497365920809-31368-6D8E756916AE1”,
“消息属性”:{
“需要的数据”:“名称,1,文本,149736597568”
}
}
]
通过做
jq'
.[] |
选择所需的(.messageAttributes.data.=null)|
{
id:.id,
路径:。路径,
messageAttributes:{
所需数据:.messageAttributes.data所需数据
}
}
“更新中的答案很好,但这里有一个变量说明了几点,特别是不需要变量,{x}
可以用作{x:.x}
的缩写:
.[0]
+ (.[]
| select(.messageAttributes.data_that_I_Need != null)
| {id,
path,
messageAttributes: {dataThat_I_Need: .messageAttributes.data_that_I_Need}} )
感谢您格式化@Thor:-)