Я пытаюсь разделить большой файл журнала, содержащий записи журнала по месяцам, и пытаюсь разделить его на файлы журнала по дате. Есть тысячи строк следующим образом:
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