300 мб - сущая мелочь :)
Я бы написал как-то так (не проверял):
grep -v "];-" LOGFILE | sed
"s/^\[([0-9]{1,2}/[A-Z][a-z]{2}/[0-9]{4}):.+\];(.+)$/\1;\2" | sort |
uniq > LOGFILE_OUT
Интуитивно - потребуется около 500 мб озу.
Но таки bash тут не используется, ну разве для работы трубопроводчиком :)
--
Dmitry Agafonov ~ http://agafonov.pp.ru/