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

как выяснить какой фильт подошёл под результат.

Добавлено: 2008-01-16 10:58:31
freeman
Собственно все мы постоянно решаем прямую задачу - есть данные и надо найти в них результат использя фильтр.
Мне вот понадобилось вычислить обратное - есть огромное кол-во фильтров и надо выяснить какой из них "выцепил" такой то результат.
Чего то с утра не лезут мысли в голову как такое можно сделать, кто небуль сталкивался ?

Re: как выяснить какой фильт подошёл под результат.

Добавлено: 2008-01-16 11:03:07
terminus
Прогнать результат через каждый из фильтров. Тот что подойдет - выдаст тот же результат, остальные ничего не выдадут.

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

echo "Putin 12345 rm 3e4r5t6y" | grep Putin
Putin
echo "Putin 12345 rm 3e4r5t6y" | grep rm
rm

echo Putin | grep Putin
Putin
echo Putin | grep rm

Re: как выяснить какой фильт подошёл под результат.

Добавлено: 2008-01-16 12:37:25
schizoid
или если они в цикле, то сделать выход по удачному завершению, с распечаткой имени фильтра.

Re: как выяснить какой фильт подошёл под результат.

Добавлено: 2008-01-16 15:15:56
freeman
terminus писал(а):Прогнать результат через каждый из фильтров.
Ок, есть текстовый файл с фильтрами типа

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

фильтр1
фильтр2
filers3
выборка9
....
и результат

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

результатище хз откуда
Абсолютно не силён в програмировании shell -ом, а вручную прогонять .. там фильтров несколько тысяч ... не подскажите как скрипт хотя бы при возможности фильтровать по типу

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

echo "Putin 12345 rm 3e4r5t6y" | grep Putin?
На самом деле там и выражения типа casta\.ru\/design\/articles\/.*\/sexy\-gallery\/.* встречаются, но те я вручную отфильтрую

Re: как выяснить какой фильт подошёл под результат.

Добавлено: 2008-01-16 15:48:58
terminus
Вы бы лучше целиком всю стояющую перед вами задачу озвучили. Детально. А то вдруг ее можно регить совсем по-другому, не так как вы ее поставили... Напишите кто генерирует логи с "результатами". Приведите пример информации из этого лога...

Если продолжать биться в лоб, то пример скрипта:

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

for rez in `cat ./rezultati.txt`
do

for filt in `cat ./filters.txt`
do

echo $rez | grep -e $filt

if [ "$?" -eq "0" ]; then
echo "rezultat $rez na pravele $filt" >> ./output.txt
fi

done

done

Re: как выяснить какой фильт подошёл под результат.

Добавлено: 2008-01-17 17:37:00
freeman
terminus писал(а):Вы бы лучше целиком всю стояющую перед вами задачу озвучили. Детально. А то вдруг ее можно регить совсем по-другому, не так как вы ее поставили...
Например с помощью такого можно решить задачу: есть текстовый файл с url запрещённых ссылок, просто куски ссылкок перечисленные в столбик (см. примиер выше) , а результат это то, что squid не пускает на нужный сайт и хз какой фильтр надо скорректировать =)
А за пример спасибо, завтра попробую, сейчас срочно оффлайн надо =)