Em um arquivo chamado result
, contendo isto:
<span class=timestamp><b>15:31:00</b></span>
Como usar o grep para o carimbo de data/hora?
Aqui estão algumas tentativas e seus resultados:
> grep "[0..9]*:[0..9]*:[0..9]*" result -o
> grep "[0..9]*:[0..9]*" result -o
:
:00
> grep "[0..9]*:" result -o
:
:
Responder1
eu usaria
grep -o '[0-2][0-9]:[0-5][0-9]:[0-5][0-9]' result
para restringir os resultados a strings que são potencialmente carimbos de data e hora - horas entre 0 e 29 (como uma aproximação para 23, assumindo 24h em vez de 12h AM/PM), minutos e segundos entre 0 e 59.
A introdução de expressões regulares estendidas permite que a correspondência seja mais rigorosa:
grep -oE '([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]' result
Para permitir segundos bissextos, 60 deve ser um valor aceitável:
grep -oE '([01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' result
(eles são adicionados pouco antes da meia-noite UTC, mas o acima permite outros fusos horários).
Responder2
Você pode logo abaixo do comando para conseguir o mesmo
grep -o "[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}" result