bash парсинг лога

Alexander Smirnov alexander.v.smirnov на gmail.com
Пн Фев 28 09:29:11 UTC 2011


Тарас Перебейносов wrote:
> Доброго времени суток!
>
> Нужна помощь в написании скрипта, который будет парсить очень большой 
> лог (> 300 Mb)
>
> Лог выглядит так:
>
> [25/Feb/2011:11:42:57 +0300];X_HudsonAccesToSVN
> [25/Feb/2011:11:42:57 +0300];X_HudsonAccesToSVN
> [25/Feb/2011:11:42:57 +0300];X_HudsonAccesToSVN
> [25/Feb/2011:11:42:57 +0300];X_HudsonAccesToSVN
> [25/Feb/2011:11:42:58 +0300];-
> [25/Feb/2011:11:43:08 +0300];-
> [25/Feb/2011:11:43:08 +0300];-
> [25/Feb/2011:11:43:09 +0300];-
> [25/Feb/2011:11:43:09 +0300];Trofimov
> [25/Feb/2011:11:43:19 +0300];-
>
> На выходе нужно получить файл, в котором будет содержаться:
> 25/Feb/2011;X_HudsonAccesToSVN
> 25/Feb/2011;Trofimov
>
> Т.е. нужно получить список юзеров за каждый день, без повторений и 
> пустых юзеров (-).
> Лог реально большой, и это тоже надо учесть.
>
> Я пока только начинаю писать скрипты на bash, пока не особо умею 
> пользоваться awk и иже с ними, поэтому буду благодарен любым советам и 
> подсказкам


$ awk -F ";" '!/\[.*\];-$/{print $2}' <filename> | sort -u







Подробная информация о списке рассылки ubuntu-ru