Awk
將時間從紀元毫秒轉換/替換為日誌文件中人類可讀的日期
我有一個具有以下結構的日誌文件
例子:
1522693524403 entity1,sometext 1522693541466 entity2,sometext 1522693547273 entity1,sometext ...
現在我想用 Debian 系統上的 bash 命令替換所有日誌文件中從紀元毫秒到 DD.MM.YYYY HH:MM:SS 的時間。
我嘗試了這里和其他網站上提供的不同解決方案,但它並沒有真正為我工作。
任何人都可以幫助我嗎?
乾杯
快速啟動
如果使用shell腳本逐行讀取,或者
awk
腳本呼叫系統date
,會很慢,程序太多。您必須使用簡單的 awk、Perl、Python 或任何腳本。所有語言都有用於格式之間轉換的標準日期時間函式。這里和這裡有一些很好的參考。如果您想使用 GNU
awk
時間函式和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
或者一起列印毫秒:
$ 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
或者列印日-月-年格式:
$ 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