回答:
egrepを試してください:
pttrn="2014-12-04 0[0-9]"
pttrn="${pttrn}|2014-12-04 1[0-6]"
pttrn="${pttrn}|2014-12-04 17:00:00"
egrep "${pttrn}" <logfile>
egrepパターンには3つの部分があります。最初の部分では、00:00:00から09:59:59までのすべてが取り込まれます。 2番目の部分は10:00:00から16:59:59までのすべてを取得し、3番目の部分は17:00:00を取得します。
egrep "2014-12-04 (0[0-9]|1[0-6]|17:00:00)"
。
開始行と終了行を選択することができます。 sed
:
sed -n '/Dec 5 11:00/,/Dec 5 12:00/p' /var/log/daemon.log
これにより、最初の行からすべての行が印刷されます。 Dec 5 11:00
最初の行まで(および含む) Dec 5 12:00
。これは、ログが時系列であると仮定している(すなわち、すべての行が時間順になっている)。の -n
各行を印刷するというデフォルトの動作を抑制します。
Dec 5 11:00
そして Dec 5 12:00
そうじゃない?もし Dec 5 10:59
すぐに続く Dec 5 11:01
それから sed
どこから始めればいいのかわからない。そしてあれば Dec 5 11:00
、 しかしその後 Dec 5 11:59
続いて Dec 5 12:01
、 sed
どこで止まるのかわからない。
:00
一部ですが、その場合も1時間に少なくとも1行のログが必要です。個人的には、スクリプトをデータに合わせて調整します。多分perl fooを適用するかもしれません。
egrep
で始まる値を消去します08
または09
(つまり、08:00
そして09:59
そして、2番目のものは可能にします17:10
、17:20
、17:30
、など...、通過する。