регулярное выражение для временной метки ЧЧ:ММ:СС?

регулярное выражение для временной метки ЧЧ:ММ:СС?

В файле с именем result, содержащем следующее:

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

Как выполнить grep для получения временной метки?

Вот несколько попыток и их результаты:

> 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 (как приближение для 23, предполагая 24 часа, а не 12 часов AM/PM), минуты и секунды от 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

(они добавляются непосредственно перед полуночью по всемирному координированному времени, но указанное выше допускает и другие часовые пояса).

решение2

Вы можете просто выполнить команду ниже, чтобы добиться того же самого

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

Связанный контент