Martin Vegter Asked: 2019-08-31 21:45:25 +0800 CST2019-08-31 21:45:25 +0800 CST 2019-08-31 21:45:25 +0800 CST dmesg:自定义时间格式 772 dmesg可以选择-T打印人类可读的时间戳,新版本有选项--time-format,可以更改时间格式,例如: --time-format iso 不幸的是,iso时间格式也不太可读。我可以使用标准date语法定义自己的时间格式吗?IE: date +%F-%T date dmesg 2 个回答 Voted markgraf 2019-09-03T10:15:55+08:002019-09-03T10:15:55+08:00 你不能,但你可以解析dmesg-output: dmesg --time-format iso \ | while read datestring rest; do \ printf '%s\n' "$(date -d "$datestring" +%F-%T) $rest"; done Best Answer Ned64 2019-09-03T10:04:13+08:002019-09-03T10:04:13+08:00 gawk是的,您可以,例如通过使用(GNU )重新格式化时间,awk如下所示: 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函数将字符串解析为日期,然后格式化 - 使用您喜欢的参数。gawkstrftime 这给出了类似的东西 +2019-09-02-06:10:30 this is an important message 小笔记: 我们在这里忽略时区,假设这很明显,因为我们在本地运行命令。 请注意,dmesg由于时间戳的存储方式,如果您挂起然后唤醒计算机,则给出的时间可能不准确(实际上,有时会偏离),请参阅dmesg(1): man 1 dmesg
你不能,但你可以解析
dmesg
-output:gawk
是的,您可以,例如通过使用(GNU )重新格式化时间,awk
如下所示:dmesg
在这里打印 iso 日期,如下所示:我们去除第一个特殊字符字符串,然后使用( )中的
mktime
函数将字符串解析为日期,然后格式化 - 使用您喜欢的参数。g
awk
strftime
这给出了类似的东西
小笔记:
我们在这里忽略时区,假设这很明显,因为我们在本地运行命令。
请注意,
dmesg
由于时间戳的存储方式,如果您挂起然后唤醒计算机,则给出的时间可能不准确(实际上,有时会偏离),请参阅dmesg(1)
: