我正在尝试拆分一个大型日志文件,一次包含几个月的日志条目,并且我正在尝试按日期将其拆分为日志文件。有几千行如下:
Sep 4 11:45 kernel: Entry
Sep 5 08:44 syslog: Entry
我正在尝试将其拆分,以便文件 logfile.20090904 和 logfile.20090905 包含条目。
我创建了一个程序来读取每一行,并将其发送到适当的文件,但运行速度很慢(特别是因为我必须将月份名称转换为数字)。我考虑过每天都做一次 grep,这需要在文件中找到第一个日期,但这似乎也很慢。
有没有更优化的解决方案?也许我错过了一个更好的命令行程序。
这是我目前的解决方案:
#! /bin/bash
cat $FILE | while read line; do
dts="${line:0:6}"
dt="`date -d "$dts" +'%Y%m%d'`"
# Note that I could do some caching here of the date, assuming
# that dates are together.
echo $line >> $FILE.$dt 2> /dev/null
done