2

任何想法如何 a 可以采用如下字符串:

string=1,2,3,4,5

并使用

number=4

<font color='red'><b></b></font>

围绕相应的数字,所以最终产品是:

newstring=1,2,3,<font color='red'><b>4</b></font>,5

谢谢您的帮助

4

3 回答 3

1

您可以使用sed

result="$(sed "s|\($number\)|<font color='red'><b>\1</b></font>|" <<< "$string")"

一般形式是:sed s|search pattern|replace|where |is some unique delimiter(通常你会使用/,但它已经在你的字符串中用于其他目的)。\(…\)是一个捕获组,它捕获命中——在这种情况下4,它可以通过 . 用于替换字符串中\1

于 2013-06-26T22:39:11.323 回答
0

纯粹的狂欢?

string="1,2,3,4,5"
num=4

re="(^|.+,)($num)(,.+|$)"
if [[ "$string" =~ $re ]]
then
    echo -n "${BASH_REMATCH[1]}"
    echo -n "<font>${BASH_REMATCH[2]}</font>"
    echo    "${BASH_REMATCH[3]}"
else
    echo "$num doesn't match"
fi

将产生:

1,2,3,<font>4</font>,5

或 perl:

echo '1,2,3,4,5' | num=4 perl -F, -lapE '$_=join ",",map{/\b$ENV{num}\b/? "<font>$_</font>":$_}@F'
于 2013-06-26T23:08:22.380 回答
0
echo "$string" | sed "s#\(,\|^\)\($number\)\(,\|\$\)#\\1<font color='red'><b>\\2</b></font>\\3#g"

在大多数情况下应该足够好。

于 2013-06-26T22:40:44.050 回答