In einer Datei namens result
, die Folgendes enthält:
<span class=timestamp><b>15:31:00</b></span>
Wie sucht man nach dem Zeitstempel?
Hier sind einige Versuche und ihre Ergebnisse:
> grep "[0..9]*:[0..9]*:[0..9]*" result -o
> grep "[0..9]*:[0..9]*" result -o
:
:00
> grep "[0..9]*:" result -o
:
:
Antwort1
ich würde ... benutzen
grep -o '[0-2][0-9]:[0-5][0-9]:[0-5][0-9]' result
um die Ergebnisse auf Zeichenfolgen zu beschränken, bei denen es sich möglicherweise um Zeitstempel handelt – Stunden zwischen 0 und 29 (als Näherungswert für 23, wobei 24 Stunden statt 12 Stunden AM/PM angenommen werden), Minuten und Sekunden zwischen 0 und 59.
Durch die Einführung erweiterter regulärer Ausdrücke kann die Übereinstimmung strenger sein:
grep -oE '([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]' result
Um Schaltsekunden zu berücksichtigen, sollte 60 ein akzeptabler Wert sein:
grep -oE '([01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' result
(sie werden kurz vor Mitternacht UTC hinzugefügt, das Obige berücksichtigt jedoch auch andere Zeitzonen).
Antwort2
Sie können einfach den folgenden Befehl verwenden, um dasselbe zu erreichen
grep -o "[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}" result