という名前のファイルには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 の近似値として、12 時間制の AM/PM ではなく 24 時間制を想定)、分と秒は 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