私はUnixで働いています。
現在の日付の指定された時間範囲内のログから情報を取得したいと思います。たとえば、今日の00:00から09:00までのログファイルデータが必要です。
ログエントリの例:
13/10/16 14:45:02 <batchspeedchange> <BELLBD.BD77350A.G6987V00> <> FAILED FILE FORMAT VALIDATION - ERROR:-213:rawData cannot contain tokens
このようなログファイルの出力をどのように取得できますか?
答え1
表示時に日付が「HH:MM」に等しいと仮定し、日付が2番目のフィールドに表示されると仮定すると、awkを使用できます。
awk -v start=00:00 -v stop=09:00 'start <= $2 && $2 < stop' file.log
[豪言のおしゃべり]私は日付形式について非常に面倒です。ところでこれは都合ありません。 「09/10/11」は何曜日ですか? [/ノホ]
とにかく「YY/MM/DD」だとしましょう。
awk -v date="$(date +%y/%m/%d)" \
-v start=00:00:00 \
-v stop=09:00:00 \
-v search="File format not found" \
'$1 == date && start <= $2 && $2 < stop && $0 ~ search' file.log
答え2
ログファイルの行が時系列になっており、00:00と00:09にイベントがあるとします。
awk '/^13\/10\/16 00:00/,/^13\/10\/16 09:00/ {print}' file.log
私は上記の内容を覚えやすく、ログを調べるのに優れたツールだと思います。これらの仮定は、本番環境で使用するには広すぎます。