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