Страница 1 из 1

Подсчет встречающихся слов в файлах

Добавлено: 2007-05-31 8:43:15
Agronom
Хочу сделать скрипт - анализатор эффективности правил для assassina, но не соображу как организовать счетчик.
Смысл скрипта такой: есть файл со списком названий правил (которые попадают в хидер) и список писем, попавших в спам с пометками в хидере, какие правила сработали для этого письма. Я беру поочереди названия правил и проверяю их наличие в теле писем, встретилось - щелкнул счетчик. Код пока такой, но он некорректный - счетчик прибавляет значение к предыдущему - оно и понятно, ведь нигде не сбрасывается :) и после работы он выдал для каждого значения одинаковый результат) и значение счетчика задваивается - в хидере одно и то же правило встречается 2 раза для одного срабатывания, один раз в списке, второй раз в развернутом варианте - когда указывается сколько баллов добавило каждое правило:

Код: Выделить всё

count=""; #счетчик, пока нулевой

SPISOK1=""; # набор слов для поиска
SPISOK2=""; # список файлов, где нужно искать эти слова

file1="/home/test/test_rul"; # откуда берем имена правил
file2="/home/test/test_spam_list"; #откуда берем файлы писем

while [ 1 ]
do
read SPISOK1 || break # начинаем читать список имен правил пока не
закончится файл
    while [ 2 ]
        do
    read SPISOK2 || break #получаем имена писем пока
не закончится файл

    if cat /home/test/spam/$SPISOK2 | awk '$0~/$SPISOK1/'; then
       let count="$count+1"
    fi

    done < $file2
    echo $SPISOK1 " = "$count >> /home/test/itogi # после поиска выводим результат
done < $file1
P.S. Может лучше всё сделать в Перле или шелл тоже сойдет? И как лучше сделать? Сначала брать правило и искать его в каждом письме, или брать по одному письму и проверять ВСЕ правила на присутствие, а потом плюсовать в массив результаты? Что будет быстрее обрабатывать данные?

Добавлено: 2007-06-09 8:50:21
Alex Keda
дважды перечитал - идею так и не понял..
какие счётчики, что считают... :)