Раскраска неокрашенного текста в 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
Спасибо за помощь