Я пытаюсь разбить большой файл журнала, содержащий записи журнала в течение нескольких месяцев, и я пытаюсь разбить его на лог-файлы по дате. Есть тысячи строк следующим образом:Упорядочить записи в дневниках
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
Хорошая работа ... Я думал о sed, но я не видел, что искал, но это выглядит великолепно. – bradlis7
2,8 секунды! Это будет работать для меня. – bradlis7
+1 Набежать на помощь! Очень хорошо! –