如何将时间戳值转换为数字,然后转换为人类可读的

如何将时间戳值转换为数字,然后转换为人类可读的

我有一个字符串时间戳键,我需要转换为数字,因为strftime会抛出一个错误,它需要是一个数字。

journalctl -n1 --output=json | jq '.__REALTIME_TIMESTAMP | tonumber |= (. / 1000 | strftime("%Y-%m-%d")), .MESSAGE'

但我收到无效路径表达式错误。我想我的语法不正确。

我最终想__REALTIME_TIMESTAMP以人类可读的格式和 key显示 key MESSAGE

答案1

我不确定你在|=这里的意图是什么。

它可以这样工作:

$ journalctl -n1 --output=json |
    jq '(.__REALTIME_TIMESTAMP | tonumber/1000000 | strftime("%Y-%m-%d %H:%M:%S")), .MESSAGE'
"2023-11-11 21:44:27"
"[session uid=1000 pid=1420] Activation via systemd failed for unit 'gvfs-daemon.service': Unit gvfs-daemon.service is masked."

或格式化/原始输出:

$ journalctl -n1 --output=json | 
    jq -r '(.__REALTIME_TIMESTAMP | tonumber/1000000 | strftime("[%Y-%m-%d %H:%M:%S]: ")) + .MESSAGE'
[2023-11-11 21:44:27]: [session uid=1000 pid=1420] Activation via systemd failed for unit 'gvfs-daemon.service': Unit gvfs-daemon.service is masked.

相关内容