Добрый день. Занялся на досуге переделкой одного хорошего скрипта-шейпера, который был сделан для роутеров на прошивке "От Олега". В свое время этот скрипт был очень удобен. Но роутер давно уже на полке, а в роли шлюза полноценая система на Ubuntu. А необходимость в шейпере только возрастала. Конечно какой-никакой шейпер был, но хотелось именно этот, так как отлично отрабатывал у меня на стареньком роутере. И был довольно гибок. В принципе в данный момент "шейперная" часть полностью отрабатывает (пришлось немного подпилить его, так как сразу под Ubuntu на завелся, были свои нюансы), но не удается заставить показывать статистику, при запуске выдает ошибку
sed: -e expression #1, char 226: Invalid range end
Ошибка в этом участке
stat=`tc -s class ls dev imq${j} | sed -re '/./{H;$!d}; x; s/\n//g
s/root/parent 1:0/
/prio/!{s/rate(.*)Sent/prio 0 rate\1Sent/;}
/Sent.*rate/!{s/Sent(.+)\)/Sent\1\)\n rate 0'$rte' 0pps/}
/pps/!{s/Sent(.*)rate ([A-z0-9]*)/Sent\1rate \2 0pps/}
s/.*htb [0-9]*:(.*) parent [0-9]*:([0-9]*) .*prio ([0-9]*) rate ([0-9A-z]*) ceil ([0-9A-z]*).*Sent ([0-9]*) bytes ([0-9]*) pk
' | sort -r | awk '
Если еще точнее то где-то тут
/pps/!{s/Sent(.*)rate ([A-z0-9]*)/Sent\1rate \2 0pps/}
В sed и его синтаксисе я слаб. Поэтому не могу увидеть ошибку. Поэтому прошу помощи в допиливании)
Пользователь решил продолжить мысль 15 Ноября 2013, 12:58:52:
отвечу сам себе. Проблема была в неправильно указанном диапазоне. Нужно было [a-Z0-9], а не [A-z0-9]