값을 얻으려고 하는데 마지막 날짜와 시간만 알고 싶습니다.

값을 얻으려고 하는데 마지막 날짜와 시간만 알고 싶습니다.

전체 로그 대신 날짜 및 시간 값을 가져오십시오.

${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

관련 정보