Logline 纳秒到微秒的转换

Logline 纳秒到微秒的转换

我正在将数据加载到 ElasticSearch 中,然后在 Kibana 中对其进行可视化。但是,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 位数字?我想以第四位数字为基础进行四舍五入。 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并打印新行。

相关内容