로그 파일의 각 줄에 대한 에포크 타임스탬프를 일괄 변환하는 방법을 찾으려고 합니다.
제가 이해한 바로는 이 과정을 따라야 합니다.
- 에포크 타임스탬프가 있는 모든 반복에 대한 로그 검색
- 사람이 읽을 수 있는 형식으로 변환하는 함수를 통해 전달합니다.
- 일반 로그 파일 출력으로 다시 편집하세요.
불행히도 형식을 제대로 얻을 수 없는 것 같습니다. 다음은 로그 파일의 작은 조각입니다.
"[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
읽고 두 번째 필드 값을 전달하여 엽니다. 그런 다음 파이프를 통해 열린 명령을 닫아야 하므로 다음을 사용합니다.awk
cmd
close(cmd)
여기.