任何想法如何可以採取類似的字符串:所以最終的產品是猛砸字符串格式化
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
感謝您的幫助
任何想法如何可以採取類似的字符串:所以最終的產品是猛砸字符串格式化
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
感謝您的幫助
您可以使用sed
:
result="$(sed "s|\($number\)|<font color='red'><b>\1</b></font>|" <<< "$string")"
的一般形式是:sed s|search pattern|replace|
其中|
是一些獨特的分隔符(通常你會使用/
但已經在你的字符串中使用用於其他目的)。 \(…\)
是一個捕獲組它捕獲命中 - 在這種情況下4
和哪些可以通過\1
在替換字符串中使用。
'string = 11,12,1,4'和'number = 1'會出現問題 – 2013-06-26 22:41:42
非常感謝! – Atomiklan
echo "$string" | sed "s#\(,\|^\)\($number\)\(,\|\$\)#\\1<font color='red'><b>\\2</b></font>\\3#g"
在大多數情況下應該工作得足夠好。
純粹的打擊?
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'
如果num = 1呢? –
@gniourf_gniourf謝謝 - 修復..;) – jm666
不'數= 4'指完全匹配在'string'或串的第四場?如果'string = a,b,c,d,e'和'number = 4'會怎麼樣? –