![如何将时间戳值转换为数字,然后转换为人类可读的](https://linux22.com/image/226450/%E5%A6%82%E4%BD%95%E5%B0%86%E6%97%B6%E9%97%B4%E6%88%B3%E5%80%BC%E8%BD%AC%E6%8D%A2%E4%B8%BA%E6%95%B0%E5%AD%97%EF%BC%8C%E7%84%B6%E5%90%8E%E8%BD%AC%E6%8D%A2%E4%B8%BA%E4%BA%BA%E7%B1%BB%E5%8F%AF%E8%AF%BB%E7%9A%84.png)
我有一个字符串时间戳键,我需要转换为数字,因为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.