Дык вроде же указал, ладно попробую с большим количеством слов. 1. Все неизменные действия нужно выносить из цикла, особенно это касается вызова внешних программ и чтения файлов. У вас же на каждую строку в IPLIST заново обрабатывается MAP, причем эта обработка не зависит от значения текущей строки из IPLIST. Обработайте MAP один раз и храните все данные в памяти. 2. Сам MAP тоже обрабатывается на редкость криво. Зачем на каждую его строку дважды вызывать awk, когда можно обойтись одним вызовом awk на весь файл? Пример for MAPSTRING in `cat $MAP` do MAPNETWORK=`echo $MAPSTRING|awk '{print $2}'` MASK=`echo $MAPSTRING|awk '{print $3}'` заменяем awk '{print $2, $3}' $MAP | while read MAPNETWORK MASK; do В данном случае конечно можно и вообще без awk обойтись, но это техника для общего случая. Ну а теперь подсчитайте сколько у вас _лишних_ вызовов внешних программ получилось и не удивляйтесь почему так медленно работает. Я мог бы написать вам вариант на perl, но вы конечно забыли предоставить формат входных и выходных данных, телепатией не владею, так что ССЗБ
|