【发布时间】:2016-04-28 13:39:20
【问题描述】:
我有 Json 输入数据,我需要将时间戳从 unix-time 重新格式化为 ISO 8601(以便之后处理文件)。
我试图通过使用来做到这一点:
<input.json jq .[2].timestamp |= jq todate >output.json
这是以正确的方式重新格式化时间戳,但是我如何将重新格式化的时间戳恢复到原始文件中?我的目标是获取原始文件及其所有信息,但重新格式化时间戳。
它可以像我想在 https://jqplay.org/ 那样工作,但不能在命令行中。 感谢您的帮助!
示例输入:
[
{
"channelId": 9088,
"errorCode": 0,
"value": 0,
"timestamp": 1460258309
},
{
"channelId": 10087,
"errorCode": 0,
"value": 1000,
"timestamp": 1460258294
},
{
"channelId": 10086,
"errorCode": 0,
"value": 90,
"timestamp": 1460258294
},
{
"errorCode": 0,
"errorLine": ""
}
]
想要的输出:
[
{
"channelId": 9088,
"errorCode": 0,
"value": 0,
"timestamp": 2016-04-10T03:18:14Z
},
{
"channelId": 10087,
"errorCode": 0,
"value": 1000,
"timestamp": 2016-04-10T03:18:14Z
},
{
"channelId": 10086,
"errorCode": 0,
"value": 90,
"timestamp": 2016-04-10T03:18:14Z
},
{
"errorCode": 0,
"errorLine": ""
}
]
【问题讨论】:
-
您能提供一个示例输入及其预期输出吗?此外,您可能的意思是使用
jq '.[2].timestamp |= todate',即使用单引号并且没有额外的 jq 调用。 -
添加了输入和预期输出。如果我跳过第二个 'jq' cmd,我会收到命令拼写错误或找不到的错误。这个问题有一个通用的解决方案吗?当我尝试使用'|'时,我总是遇到这个问题
标签: unix-timestamp jq