時間戳記 HH:MM:SS 的正規表示式?

時間戳記 HH:MM:SS 的正規表示式?

在名為 的檔案中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

(它們是在 UTC 午夜之前添加的,但上面允許其他時區)。

答案2

您可以透過下面的命令來實現相同的效果

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

相關內容