전체 로그 대신 날짜 및 시간 값을 가져오십시오.
${1} - Bash의 명령줄 인수
${i} - for 루프의 배열 항목
grep -ERh "stopped" ems_*/SystemOut*.log | tail -1
현재 가치는 이렇습니다
ems_inet1/SystemOut1.log:[6/8/17 10:47:45:896 SGT] 00000066 ServerCollabo A WSVR0024I: Server ems_inet1 stopped
일부 코드에는 대괄호 안에 여러 값이 있습니다.
ems_inet1/SystemOut1.log:[9/24/19 17:23:34:324 SGT] 00004442 SystemOut O 24 Sep 2019 17:23:34:324 [INFO] [ems_inet1] [CID-UIASYNC-16412]
sed에서 RegEx를 시도했지만 제대로 작동하지 않았습니다.
\[\d{2}\/\d{2}\/\d{2}\s+\d{2}:\d{2}:\d{2}:\d{3}\s+\w{3}\]
난 그냥 이 값을 원해
[6/8/17 10:47:45:896 SGT]
@Bodo로 해결됨
답변1
완전한 실제 데이터가 없는 경우 이 답변은 일부 추측에 기초한 것입니다.
나는 가정한다
- 파일 이름에 대괄호(
[]
) 및 - 데이터에는 항상 행 시작 부분의 괄호 안에 타임스탬프가 포함됩니다.
sed
(편집: 그룹이 더 많은 경우 대괄호 안에 첫 번째 그룹을 캡처하도록 정규식 수정)을 사용하여 출력을 사후 처리할 수 있습니다. )
grep -ER "stopped" ems_rpt1/SystemOut.log | tail -1 | sed 's/[^[]*\(\[[^]]*\]\).*/\1/'
참고: 사용한 옵션은 -E
"확장 정규식을 사용하여 일치"를 의미합니다. 귀하의 예에서는 간단한 문자열만 사용하므로 "일치에 고정 문자열 사용"을 의미하는 option -F
대신 사용할 수 있습니다 .-E