타임스탬프 HH:MM:SS에 대한 정규식?

타임스탬프 HH:MM:SS에 대한 정규식?

라는 파일에는 result다음과 같은 내용이 있습니다.

<span class=timestamp><b>15:31:00</b></span>

타임스탬프를 찾는 방법은 무엇입니까?

다음은 몇 가지 시도와 그 결과입니다.

> grep "[0..9]*:[0..9]*:[0..9]*"  result -o

> grep "[0..9]*:[0..9]*"  result -o
:
:00

> grep "[0..9]*:"  result -o
:
:

답변1

나는 사용할 것이다

grep -o '[0-2][0-9]:[0-5][0-9]:[0-5][0-9]' result

결과를 타임스탬프일 수 있는 문자열(0에서 29 사이의 시간(오전/오후 12시간 대신 24시간으로 가정하여 대략 23), 0에서 59 사이의 분 및 초)으로 제한합니다.

확장 정규식을 도입하면 일치가 더욱 엄격해질 수 있습니다.

grep -oE '([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]' result

윤초를 허용하려면 60이 허용 가능한 값이어야 합니다.

grep -oE '([01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' result

(UTC 자정 이전에 추가되었지만 위에서는 다른 시간대도 허용됩니다.)

답변2

다음 명령으로 동일한 효과를 얻을 수 있습니다

grep -o "[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}" result

관련 정보