Сказано - сделано. Полез в гугль, покопался и нашёл что-то похожее на правду: утилиту hlstring. Единственный недостаток - в ебилдах я её не нашёл, поэтому пришлось наморщить ум.
Результатом морщения оного стал вот такой скриптик:
#!/bin/bash
IN_COLOR="^[[0;31;40m"
OUT_COLOR="^[[0;37;40m"
[[ $1 == "" ]] && echo "Usage: $0 [-c color] [--raw-cond]" && exit
while [[ $2 != "" ]]; do
[[ $1 == "--" ]] && shift && break
if [[ $1 == "-c" ]]; then
IN_COLOR="^[[0;$2;40m"
shift
continue
fi
if [[ $1 == "--raw-cond" ]]; then
RAW_COND=true
fi
shift
done
if [[ $RAW_COND == "" ]];then
SED_COND="/$1/"
else
SED_COND="$1"
fi
sed -re "${SED_COND} s/(.*)/$IN_COLOR\1$OUT_COLOR/"
Ну, что тут и как понять вроде не сложно. Ищем sed-ом строки и обрамляем ESC кодами. Коды забиты в шаблон поэтому не факт, что оно будет правильно работать на всех терминалах. Но на xterm - вполне.
Закатал его в файлик highlight.sh, и добавил alias в zsh - hl.
Пример использования:
leela ~ # iptables -L -v | hl eth0 | hl -c 33 --raw-cond 1,2
Выводим правила iptables
Подсвечиваем строки, содержащие eth0 (по умолчанию красным)
И подсвечиваем первую и вторую строку цветом 33 (им оказался жёлтый).
-c как вы поняли цвет, --raw-cond задаёт условие выбора строк в sed как есть (по умолчанию обрамляется /)
Вот даже и картинку сделал:
P/S/ Кстати, можно видеть, что через eth0 я скачал 19 метров (это примерно за сутки) платного трафика, а через бесплатный гостевой доступ уже 3.8 Гига. Похоже больше трафик не крадут ;) А ещё похоже, что первые 4 правила вообще не нужны.
З.Ы.Ы. Если кто захочет скопировать скрипт, то он у вас не заработает. Чтоб сработал надо везде в тексте заменить ^[ на реальный символ ESC. В консоли(и в vim-е тоже) он вводится путём нажатия Ctr+V и затем ESC.
Комментариев нет:
Отправить комментарий