Удаление повторов в текстовом фаиле

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Аватара пользователя
unix_man
Сообщения: 357

Удаление повторов в текстовом фаиле

Сообщение unix_man »

есть фаил test в нем находится много сторок с повторами ( лог courier-a). Требуется удалить из этого фаила все строки которые повторяются. Но строки различаются датой, пример:
Jan 9 15:59:16 mail courierpop3login: LOGIN, user=*@*.ru, ip=[::ffff:***********]
Jan 9 15:59:50 mail courierpop3login: LOGIN: ip=[::ffff:*], command=USER
Jan 9 15:59:50 mail courierpop3login: LOGIN: ip=[::ffff:*], command=PASS
Jan 9 15:59:50 mail courierpop3login: LOGIN: ip=[::ffff:*], username=*@*.ru
Jan 9 15:59:50 mail courierpop3login: LOGIN: ip=[::ffff:*], password=*
Jan 9 15:59:50 mail courierpop3login: LOGIN, user=*@*, ip=[::ffff:*************]
Jan 9 16:00:13 mail courierpop3login: LOGIN: ip=[::ffff:*], command=USER
Jan 9 16:00:13 mail courierpop3login: LOGIN: ip=[::ffff:*], command=PASS
Jan 9 16:00:13 mail courierpop3login: LOGIN: ip=[::ffff:*], username=*@*.ru
Jan 9 16:00:13 mail courierpop3login: LOGIN: ip=[::ffff:*], password=*


И так далее.


Как это можно сделать ?
Andromeda OS
CPU Dual AMD Opteron 2.4 ГГц /RAM 8Gb/HDD 400+400Gb (raid 0)
Спасибо сказали:
Аватара пользователя
Skull
Модератор
Сообщения: 2089
ОС: ALT Linux

Re: Удаление повторов в текстовом фаиле

Сообщение Skull »

unix_man писал(а):
09.01.2007 19:02
есть фаил test в нем находится много сторок с повторами ( лог courier-a). Требуется удалить из этого фаила все строки которые повторяются. Но строки различаются датой,
...
Как это можно сделать ?
man uniq. Обратите внимание на параметр -f
Skull
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Удаление повторов в текстовом фаиле

Сообщение sash-kan »

Skull
вот только uniq сравнивает, к сожалению, лишь соседние строки.
unix_man
так что надо еще отсортировать строки прежде чем передавать их uniq-у.
и тут пригодится ключ -k команды sort. например так:
cat <file> | sort -k 6 | uniq -f 5 |sort
последний sort — для восстановления сортировки по дате. но дата не очень-то красиво записана. можно еще поколдовать. man sort.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали: