ログラインナノ秒をマイクロ秒に変換

ログラインナノ秒をマイクロ秒に変換

ElasticSearchにデータをロードしてからKibanaで視覚化しています。しかし、キバナはナノ秒精度をサポートしていません。私のファイルには900,000行が含まれています。

bashでこのファイルを前処理したいと思います。

入力ファイル1.csv:

2018-10-1711:54:59.4422378、OUTLOOK.EXE、12052、11316、スレッド分析、スレッド11316、成功、ユーザー時間:0.0000000;カーネル時間:0.0000000;コンテキストスイッチ:3、会社\ユーザー名、0

期待される出力 file2.csv:

2018-10-1711:54:59.442. OUTLOOK.EXE、12052、11316、スレッド分析、スレッド11316、成功、ユーザー時間:0.0000000、カーネル時間:0.0000000、コンテキストスイッチ:3、会社\ユーザー名、0

日付を3桁に丸める方法は? 4桁目を基準に丸めたいです。 4425000 = 442、4426000 = 443

答え1

awk -F, 'BEGIN { OFS=FS=","; } 
  {
    seconds=substr($1, index($1, ".")-2, 10); 
    ms=substr(seconds, 7); 
    seconds=substr(seconds, 1, 6); 
    if (ms > 5000) 
      seconds += 0.001; 
    $1=sprintf("%s%6.3f", substr($1, 1, index($1, ".") - 2), seconds);
    print
  }' < input

これは、単に最初のパラメータからタイムスタンプフィールドを強制的に削除し、時間を丸める必要があることを確認します。新しい時間値を使用してタイムスタンプフィールドを再組み立てし、$1新しい行を印刷します。

関連情報