로그 파일의 여러 줄에서 에포크 시간 변환

로그 파일의 여러 줄에서 에포크 시간 변환

로그 파일의 각 줄에 대한 에포크 타임스탬프를 일괄 변환하는 방법을 찾으려고 합니다.

제가 이해한 바로는 이 과정을 따라야 합니다.

  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읽고 두 번째 필드 값을 전달하여 엽니다. 그런 다음 파이프를 통해 열린 명령을 닫아야 하므로 다음을 사용합니다.awkcmdclose(cmd)여기.

관련 정보