Раскраска неокрашенного текста в Bash

Я должен раскрасить некоторые слова в тексте, это хорошо работает, но у меня есть проблема, когда он уже раскрашен. Когда он окрашен, я не хочу снова окрашивать его другим цветом. Моя проблема в том, что мой код раскрасил его снова, даже если он уже раскрашен.

Вот мой код:

var=$(echo -e $line | grep ".*[^m]${word}[^\][^e].*" | sed -e "s/${word}/${color}${word}${endColor}/g")
if(var -n);then
line=$var
f

Это сценарий, где каждый нечетный цвет и четное слово, которое вы хотите раскрасить. Проблема в том, что есть слово, которое уже раскрашено, и я не хочу его перекрашивать. Ввод может быть любым

вот полный код

function GetColor {
if [ $1 == 'r' ];then
color=$red;
fi
if [ $1 == 'b' ];then
color=$blue;
fi
if [ $1 == 'g' ];then
color=$green;
fi
}

red=

Спасибо за помощь

\e[31m' green=

Спасибо за помощь

\e[32m' blue=

Спасибо за помощь

\e[34m' endColor=

Спасибо за помощь

\e[0m' a=0 color="" word="" while read input do radek=$input for i in $*; do if (( a% 2 )); then word=$i var=$(echo -e $line | grep ".*[^m]${word}[^\][^e].*" | sed -e "s/${word}/${color}${word}${endColor}/g") if(var -n);then line=$var fi else color="" GetColor "$i" fi let "a += 1" done echo -e $line exit done

Спасибо за помощь

Ответы на вопрос(1)

Ваш ответ на вопрос