fas*_*oot 2 sed awk timestamps conversion
我有一个具有以下结构的日志文件
例子:
1522693524403 entity1,sometext
1522693541466 entity2,sometext
1522693547273 entity1,sometext
...
Run Code Online (Sandbox Code Playgroud)
现在我想在 Debian 系统上使用 bash 命令将所有日志文件中的时间从纪元毫秒替换为 DD.MM.YYYY HH:MM:SS。
我尝试了这里和其他网站上提供的不同解决方案,但它对我来说并没有真正起作用。
有人可以帮我吗?
干杯
快速启动
如果使用shell脚本逐行读取,或者awk
脚本调用system date
,会很慢,进程太多。您必须使用简单的 awk、Perl、Python 或任何脚本。所有语言都具有用于格式之间转换的标准日期时间函数。
这里和这里有一些很好的参考。如果您想使用 GNUawk
时间函数和strftime()
,您只需选择纪元子字符串(不包括毫秒):
$ awk '{$1 = strftime("%F %T", substr($1,1,10))} 1' file
2018-04-02 21:25:24 entity1,sometext
2018-04-02 21:25:41 entity2,sometext
2018-04-02 21:25:47 entity1,sometext
Run Code Online (Sandbox Code Playgroud)
或者一起打印毫秒:
$ awk '{$1 = strftime("%F %T", substr($1,1,10)) "." substr($1,11)} 1' file
2018-04-02 21:25:24.403 entity1,sometext
2018-04-02 21:25:41.466 entity2,sometext
2018-04-02 21:25:47.273 entity1,sometext
Run Code Online (Sandbox Code Playgroud)
或者打印日-月-年格式:
$ awk '{$1 = strftime("%d-%m-%Y %T", substr($1,1,10))} 1' file
02-04-2018 21:25:24 entity1,sometext
02-04-2018 21:25:41 entity2,sometext
02-04-2018 21:25:47 entity1,sometext
Run Code Online (Sandbox Code Playgroud)