En un archivo llamado result
, que contiene esto:
<span class=timestamp><b>15:31:00</b></span>
¿Cómo buscar la marca de tiempo?
Aquí hay algunos intentos y su resultado:
> grep "[0..9]*:[0..9]*:[0..9]*" result -o
> grep "[0..9]*:[0..9]*" result -o
:
:00
> grep "[0..9]*:" result -o
:
:
Respuesta1
yo usaría
grep -o '[0-2][0-9]:[0-5][0-9]:[0-5][0-9]' result
para restringir los resultados a cadenas que son potencialmente marcas de tiempo: horas entre 0 y 29 (como una aproximación para 23, asumiendo 24 h en lugar de 12 h AM/PM), minutos y segundos entre 0 y 59.
La introducción de expresiones regulares extendidas permite que la coincidencia sea más estricta:
grep -oE '([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]' result
Para permitir segundos intercalares, 60 debería ser un valor aceptable:
grep -oE '([01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' result
(Se agregan justo antes de la medianoche UTC, pero lo anterior permite otras zonas horarias).
Respuesta2
Puedes justo debajo del comando para lograr lo mismo.
grep -o "[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}" result