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