awk - печать с запуском функции на определённых символах

Просьба к знатокам — наваять команду на awk с запуском bash-функции для каждой части текста, совпадающей с шаблоном.

bash-скрипт работает медленно (нужен awk), заменяя ключевые пробелы на коды цвета вида \e[0;…

ЗАДАЧА: bash-функция должна вызываться на цепочке управляющих пробелов плюс любой другой символ после неё.
шаблон нужен примерно такой: [ \uA0[\u2000-200A]\u202F ]. где точка означает любой символ (одно вхождение), КРОМЕ тех, что в []
в функцию должны попадать: [\unicode2001любой_символ] или [\uA0\u2001\u202Fлюбой_символ] где любой символ не равен тем, что в []
НЮАНС: bash-функция использует две свои глобальные переменные, которые не должны теряться.
то есть функция должна считать то, что записала в эти переменные в предыдущий вызов, на предыдущем совпадении.

Плюсы: в консоли текст выглядит как обычно (нет затрудняющих восприятие ${color}), но скрипт напечатает текст в цвете.
Данный код работает не так, как описано в задаче: обход текста посимвольно:
man_ex(){ #цветной вывод, управляющие пробелы заменяются на \e[… сочетания
	local e t="$@" sp=(A0 2000 2001 2003 2004 2005 2006 2007 2008 2009 202F 200A) col=(R 30 31 32 33 34 35 36 37 F B L)
	for ((i=0;i<${#t};i++)); do     # обход текста посимвольно
		if ! [[ ${t:$i:1} =~  | | |[ - ]|  ]]; then #A0 2000 2001 2003-200A 202F
			printf %s "${t:$i:1}" #обычный символ
			continue
		fi
		c=$(printf %02X "'${t:$i:1}"); local a #массив 1 ключевые пробелы, массив 2 цвета
		if a=$(printf "%s\n" "${sp[@]}"| grep -nwm1 "$c"); then
			e="${col[$((${a%%:*}-1))]}" #sp ключевой пробел
			if [[ "$e" =~ F|B|L ]]; then #за sp идёт цвет. сначала цвет, затем фон:   Help…
				ctl="$e"
				continue
			fi # reset  Black  Red  Green  Yellow  Blue  Purple  Cyan  White  Backgr  Bold  Link
			case "${ctl:-0}" in
				F) esc="\e[4${e:(-1)}";		ctl=;; # fone \e[0;36m > \e[46m
				B) esc="\e[1;3${e:(-1)}"; ctl=;; # bold \e[0;36m > \e[1;36m
				L) esc="\e[4;3${e:(-1)}"; ctl=;; # link \e[0;36m > \e[4;36m
				*) [ "$esc" = "\e[0;$e" ] && esc="\e[1;7" || esc="\e[0;$e"; [[ $e = R ]] && esc="\e[0";;
			esac
			printf %s "${esc}m" #цвет, повтор добавит яркость: \e[1;7
		else
			printf \\u$c #обычный символ, нет совпадения с ключевым пробелом
		fi
	done #это символ. глобальные переменные: esc (пред. цвет), ctl (пред. код)
}
man="   ◢  ◤   ◢   ◤      ◤X Spectrum

   Retro    computer  "

echo -e "$(man_ex "$man")"
А какое практическое применение этого "подхода" извиняюсь...?
Или я что-то не догоняю, или массив sp придётся переписывать под каждую новую строчку, тогда какой смысл?
Ошибки в тексте-неповторимый стиль автора©
раскраска справки, например как это показано в скриншоте или в моей утилите run из дистрибутива IceArch.

2) проще запустить скрипт, там происходит только посимвольный вывод текста, массивы не меняются.
в массиве sp указаны ключевые пробелы, которые заменяются цветом из массива col.
Если в тексте встречается ключевой пробел, он заменяется на сооответствующую ему \e[0 последовательность.
Dobrov
Если в тексте встречается ключевой пробел
О, это много проясняет... а какое преимущество этого?
   hello     
над обычным?
${green}hello${end}
если итог одинаковый, а читаемость нулевая?

p.s. и наверно 4:if [ , а то не работает((
Ошибки в тексте-неповторимый стиль автора©
indeviral
а какое преимущество этого?…
Лёгкость редактирования, например, в редакторе такой текст выглядит как обычно, но моя функция напечатает его в цвете.

запусти мой скрипт run без параметров и глянь на справку.
Справка создаётся автоматически из заголовков case-команд и функций. (БОЛЬШЕ НЕ НУЖНО ЗАДАВАТЬ ВОПРОС НЕ ПО ТЕМЕ)
а куда нибудь на vcs не судьба?((
p.s. а понятно....

жуть какая-то(( я такое не запускаю.
Ошибки в тексте-неповторимый стиль автора©
 
Зарегистрироваться или войдите чтобы оставить сообщение.