로그라인 나노초를 마이크로초로 변환

로그라인 나노초를 마이크로초로 변환

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하고 새 줄을 인쇄합니다.

관련 정보