ログファイルの複数行からのエポック時間の変換

ログファイルの複数行からのエポック時間の変換

ログファイルの各行のエポックタイムスタンプを一括変換する方法を見つけようとしています。

私が理解したのはこのプロセスに従うべきです。

  1. エポックタイムスタンプを持つすべての反復のログ検索
  2. 人間が読める形式に変換する関数を渡します。
  3. 通常のログファイル出力でもう一度編集してください。

残念ながら形式が正しく得られないようです。以下はログファイルの小さな部分です。

"[1508371955] Auto-save of retention data completed successfully.",
"[1508375555] Auto-save of retention data completed successfully.",
"[1508379155] Auto-save of retention data completed successfully.",
"[1508382755] Auto-save of retention data completed successfully.",
"[1508386355] Auto-save of retention data completed successfully."

ベストアンサー1

awk -F"[][]" '{cmd="date -d@" $2;cmd |getline $2; close(cmd)}1' infile

" Thu Oct 19 03:42:35 STD 2017  Auto-save of retention data completed successfully.",
" Thu Oct 19 04:42:35 STD 2017  Auto-save of retention data completed successfully.",
" Thu Oct 19 05:42:35 STD 2017  Auto-save of retention data completed successfully.",
" Thu Oct 19 06:42:35 STD 2017  Auto-save of retention data completed successfully.",
" Thu Oct 19 07:42:35 STD 2017  Auto-save of retention data completed successfully."

ここでは、シェルコマンドをdate -d@$2名前付き変数に設定しますcmd。次に行をcmd |getline $2読み、2番目のフィールド値を渡して開きます。その後、パイプを介して開いたコマンドを閉じる必要があるため、次のようにします。awkcmdclose(cmd)ここで。

おすすめ記事