Awk

將時間從紀元毫秒轉換/替換為日誌文件中人類可讀的日期

  • December 5, 2020

我有一個具有以下結構的日誌文件

例子:

1522693524403 entity1,sometext
1522693541466 entity2,sometext
1522693547273 entity1,sometext
...

現在我想用 Debian 系統上的 bash 命令替換所有日誌文件中從紀元毫秒到 DD.MM.YYYY HH:MM:SS 的時間。

我嘗試了這里和其他網站上提供的不同解決方案,但它並沒有真正為我工作。

任何人都可以幫助我嗎?

乾杯

快速啟動

如果使用shell腳本逐行讀取,或者awk腳本呼叫系統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

或者一起列印毫秒:

$ 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

引用自:https://unix.stackexchange.com/questions/623046