次の構造のログファイルがあります。
例:
1522693524403 entity1,sometext
1522693541466 entity2,sometext
1522693547273 entity1,sometext
...
Debianシステムでbashコマンドを使用して、すべてのログファイルの時間をepochミリ秒からDD.MM.YYYY HH:MM:SSに変更したいと思います。
ここと他のサイトで提供されているさまざまなソリューションを試しましたが、実際には効果がありませんでした。
誰でも私を助けることができますか?
乾杯
クイックスタート
ベストアンサー1
シェルスクリプトを使用して1行ずつ読み込むか、スクリプトがawk
systemを呼び出すと、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