На самом деле это единственный раздел про unix на этом форуме
Модераторы: /dev/random , Модераторы разделов
BuGfiX
Сообщения: 78
ОС: slackware-current
Сообщение
BuGfiX » 20.07.2006 13:14
В общем, тривиальнейшая задачка, есть лог clamav, нужно посчитать количество каждого из вирусов, найденных им.
для тех кто незнает как выглядит лог, пример:
Код: Выделить всё
.....
Thu Jul 20 11.45.27 2006 -> /var/tmp/clamav-54534545tsfd/msg.6n7f9: OK
Thu Jul 20 11.45.27 2006 -> /var/tmp/clamav-54534545tsfd/msg.4fd4d: Worm.BeagleFool.P FOUND
....
Я решаю это так:
Код: Выделить всё
#!/bin/sh
FILE=/var/log/clamav/clamd.log
ALL=`cat $FILE | grep FOUND | awk '{print $8}' | sort | uniq`
for i in $ALL do
COUNT=`cat $FILE | grep $i | wc -l`;
echo -e "$i\t$COUNT";
done
Мне интересно, как с подобными вещами справляются другие, может есть более простое и красивое решение?
sergius
Сообщения: 782
Сообщение
sergius » 20.07.2006 13:46
cat $FILE | grep FOUND | awk '{print $8}' | uniq -c | sort -r
man uniq
jsv
Сообщения: 67
Сообщение
jsv » 20.07.2006 13:49
sergius писал(а): ↑ 20.07.2006 13:46
cat $FILE | grep FOUND | awk '{print $8}' | uniq -c | sort -r
man uniq
Я бы ещё cat|grep|awk заменил на
awk '/FOUND/ {print $8}' $FILE
BuGfiX
Сообщения: 78
ОС: slackware-current
Сообщение
BuGfiX » 20.07.2006 14:04
спасибо за ответы
в итоге все вылилось в одну строчку:
Код: Выделить всё
awk '/FOUND/ {print $8}' /var/log/clamav/clamd.log | sort | uniq -c | sort -r
как говорится - век живи, век читай маны ))
sergius
Сообщения: 782
Сообщение
sergius » 20.07.2006 14:51
BuGfiX писал(а): ↑ 20.07.2006 14:04
спасибо за ответы
в итоге все вылилось в одну строчку:
awk '/FOUND/ {print $8}' /var/log/clamav/clamd.log |
sort | uniq -c | sort -r
как говорится - век живи, век читай маны ))
Код: Выделить всё
awk '/FOUND/ {print $8}' /var/log/clamav/clamd.log | uniq -c | sort -r
Два сорта не нужны
BuGfiX
Сообщения: 78
ОС: slackware-current
Сообщение
BuGfiX » 20.07.2006 17:17
> Два сорта не нужны
Нужны. Иначе uniq не выкидывает лишние строчки, а просто дублирует.
sergius
Сообщения: 782
Сообщение
sergius » 20.07.2006 17:23
BuGfiX писал(а): ↑ 20.07.2006 17:17
> Два сорта не нужны
Нужны. Иначе uniq не выкидывает лишние строчки, а просто дублирует.
Разве? Что-то я забыл
Тогда так:
Код: Выделить всё
awk '/FOUND/ {print $8}' /var/log/clamav/clamd.log | sort -r | uniq -c
BuGfiX
Сообщения: 78
ОС: slackware-current
Сообщение
BuGfiX » 20.07.2006 19:34
sergius писал(а): ↑ 20.07.2006 17:23
Тогда так:
Код: Выделить всё
awk '/FOUND/ {print $8}' /var/log/clamav/clamd.log | sort -r | uniq -c
так то оно так, работает, не спорю =)
просто вариант с 2-мя sort-ами выводит рейтинг (т.е. сортирует по количеству в пор. убывания), а с одним - в том порядке в котором они встречаются.
sergius
Сообщения: 782
Сообщение
sergius » 20.07.2006 21:15
awk '/FOUND/ {print $8}' /var/log/clamav/clamd.log | sort | uniq -c | sort -rn
Тогда, так будет еще лучше. Иначе номера будет сортировать следующим образом:
1
10
2
20
3
30