dmesg
-T
人が読めるタイムスタンプを印刷するオプションがあり、新しいバージョンには--time-format
時間形式を変更するオプションがあります。たとえば、次のようになります。
--time-format iso
残念ながら、iso
時間形式も読みやすくありません。date
標準構文を使用して独自の時間形式を定義できますか?今すぐ:
date +%F-%T
答え1
できませんが、dmesg
出力を解析できます。
dmesg --time-format iso \
| while read datestring rest; do \
printf '%s\n' "$(date -d "$datestring" +%F-%T) $rest"; done
答え2
gawk
awk
はい、たとえば、次のように(GNU)を使用して時間形式を再指定できます。
dmesg --time-format iso | gawk '{ printf (strftime("+%F-%T",mktime(gensub("[-+T:,]"," ","g",$1)))) ; $1 = ""; print $0}'
dmesg
以下のようにここにISO日付を印刷します。
2019-09-02T06:10:30,708864+02:00 this is an important message
最初の文字列から特殊文字を削除し、mktime
()g
の関数を使用して文字列をawk
日付として解析し、目的のパラメータをstrftime
使用して書式設定します。
これは次のようなものを提供します
+2019-09-02-06:10:30 this is an important message
小さなメモ:
ここでは、コマンドをローカルで実行しているので、これが明らかであると仮定してタイムゾーンを無視します。
dmesg
タイムスタンプが保存されているためにコンピュータを一時停止して覚醒させると、指定された時間が正しくない可能性があります(実際にはかなり不正確になる可能性があります)。以下を参照してくださいdmesg(1)
。man 1 dmesg