回答:
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、など...、通過する。