ログから特定の期間を把握する方法

ログから特定の期間を把握する方法

使用するログファイルには、次の日付/時刻形式で始まる行エントリがあります。

20150408 13:29:28 <rest of text>

grep期間を決定するにはどうすればよいですか?

20150408 13:29:28で始まり終わるすべての行と同様に20150408 17:55:02

grep仕事のためのツールになるのか、それとも良いツールになるのでしょうかsed

ベストアンサー1

もちろん、課題は通過することができますsed

sed '/20150408 13:29:28/,/20150408 17:55:02/! d' log_files

ただし、行が正しくない場合、20150408 13:29:28スクリプトは何も印刷せず、正確でない場合は20150408 17:55:02ファイルは最後まですべての行を印刷します。したがって、スクリプトを介して日付比較を使用する方が良いです。

limit1=$(date -d "20150408 13:29:28" +"%s")
limit2=$(date -d "20150408 17:55:02" +"%s")
while read -r logdate logtime logline
do
    logsec=$(date -d "$logdate $logtime" +"%s")
    if [ $limit1 -le $logsec -a $limit2 -ge $logsec ]
    then
        echo $logdate $logtime $logline
    fi
done < log_files

おすすめ記事