wenn Sie für
00:00:00 bis 23:59:59 eine Übereinstimmung erzielen möchten
egrep '([0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]'t
wenn Sie von
12.00 bis 12.59 Uhr passen möchten
egrep -i '((?:0[0-9]|1[012]):[0-5][0-9]:[0-5][0-9]\s?(?:a|p)m)'
Wenn Sie an der Datei arbeiten, müssen Sie die Zeile mit einem Zeitstempel im Format H: MM: SS formatieren. Ich habe folgendes egrep '[0-9] ausprobiert: [0-9]: [0-9]'. Hat nicht für mich gearbeitet. Was mache ich falsch in Regex?
wenn Sie für
00:00:00 bis 23:59:59 eine Übereinstimmung erzielen möchten
egrep '([0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]'t
wenn Sie von
12.00 bis 12.59 Uhr passen möchten
egrep -i '((?:0[0-9]|1[012]):[0-5][0-9]:[0-5][0-9]\s?(?:a|p)m)'
[0-9]:[0-9]:[0-9]
würde mit H: M: S übereinstimmen, bot nicht H: MM: SS.
Jeder Satz von eckigen Klammern entspricht einem einzelnen Zeichen.
Um etwas zu bekommen, das zu H: MM: SS passt, könnten Sie Folgendes verwenden:
[0-9]:[0-9][0-9]:[0-9][0-9]
Beachten Sie, dass die obigen Punkte NICHT mit H: M: S übereinstimmen
Um mit H: MM: SS ODER H: M: S ODER H: M: SS ODER H: MM: S übereinzustimmen, verwenden Sie Folgendes
[0-9]:[0-9]+:[0-9]+
+
bedeutet, dass das letzte Zeichen mindestens ein Mal (einschließlich der ersten Übereinstimmung) übereinstimmt
Ich schlage vor, Sie verwenden
egrep '[0-9]:[0-9]:[0-9]'
Dabei bedeutet das letzte Zeichen mindestens zweimal und maximal zweimal (= genau zweimal), wobei das letzte Zeichen in diesem Beispiel eine Zahl zwischen 0 und 9 war.
Wenn Sie danach mindestens eine und maximal zwei suchen möchten, müssen Sie es in ändern
egrep '[0-9]:[0-9]:[0-9]'
welche zum Beispiel auf 0:1:22
und 0:11:22
und 00:11:22
und 00:11:2
und so weiter passt .
Die Antwort, die Sirius_Black gab, ist auch ein Test auf reale Zeiten. Meine Antwort würde für unrealistische Zeiten wie 99:99:99 passen - was jedoch eine Zeitdauer sein könnte.