タイムスタンプ値を数値に変換してから人間が読める値に変換する方法

タイムスタンプ値を数値に変換してから人間が読める値に変換する方法

strftimeエラーが発生して数値である必要があるため、数値に変換する必要がある文字列タイムスタンプキーがあります。

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

しかし、間違ったパス表現エラーが発生します。私の構文が間違っていると思います。

__REALTIME_TIMESTAMP私は最終的に人間が読める形式でキーとキーを表示したいと思います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.

関連情報