需要帮助使用 jq 的输出更新时间元素?

Need help updating time element with output from jq?

具有建议格式的当前对象

[
  {
    "time": "2022-01-28T17:50:31.620Z"
  }
]

执行从 iso8601 到 unix 的命令

jq'.[].time | sub("\.[0-9]+Z$"; "Z") |从日期' time_test.json

输出 1643392231

我尝试了不同的组合,但如何更新对象中的时间值。我可以进行转换,但似乎无法使用输出更新值。

预期结果 -

[
  {
    "time": "1643392231"
  }
]

取消小数秒,您可以使用 fromdate。要在正则表达式中转义,请使用双反斜杠。

jq 'map(.time |= (sub("\.\d+"; "") | fromdate))'
[
  {
    "time": 1643392231
  }
]

Demo

您映射了数组中的所有值,但实际上并未修改或重新创建数组。

要修改,请使用赋值:(您快到了)

.[].time |= (sub("\.\d+Z$"; "Z") | fromdate)

要重新创建,请对其进行映射。

map(.time |= (sub("\.\d+Z$"; "Z") | fromdate))