На мой взгляд, править код с невводимыми с клавиатуры символами трудновато.
Я у себя разбил логику на несколько вызовов sed'а и отправлял результат по пайпу в процедуру раскраски. Вышло не так круто, зато появилась возможность создать несколько цветовых схем, свободно с ними экспериментировать и дать пользователю выбор расцветки. Добавляет гибкости, да и код становится понятней.
Превозмогая трудности: Gravity Defied на sed