轉自:http://blog.chinaunix.net/uid-29091195-id-3974751.html
我們所遇到的編程語言中(匯編除外)都少不了字符串處理函數吧,
當然shell編程也不例外咯,那么下面我們一起來看下shell中字符串
處理的相關操作吧。大概下面的字符串操作可以分為兩種類型,一種
屬于變量替換,另一種屬于繼承unix expr命令吧!
??
1、測試字符串長度${#string}expr length $stringexpr "$string" : '.*'例:#!/bin/bashstr="asfd"echo "${#str}"a=expr length $strecho "a=$a"a=0a=`expr "$str" : '.*'`echo "a=$a"2、匹配字符串開頭的子串長度expr match "$string" '$substring'$substring是一個正則表達式.expr "$string" : '$substring'$substring是一個正則表達式.例:#!/bin/bashstr=abcABC123ABCabcecho `expr match "$str" 'abc[A-Z]*.2'` # 8echo `expr "$str" : 'abc[A-Z]*.2'` # 83、索引expr index $string $substring在字符串$string中所匹配到的$substring第一次所出現的位置.例:#!/bin/bashstr=abcABC123ABCabcecho `expr index "$str" C` # 6 C 字符的位置.echo `expr index "$str" c` # 34、提取子串${string:position}在$string中從位置$position開始提取子串。如果$string是"*"或者"@", 那么將會提取從位置$position開始的位置參數. [1]${string:position:length}在$string中從位置$position開始提取$length長度的子串.例:#!/bin/bashstr="abcABC123ABCabc"echo ${str:0} #輸出abcABC123ABCabcecho ${str:3} #輸出ABC123ABCabc echo ${str:6:3} #輸出1235、子串削除${string#substring}從$string的開頭位置截掉最短匹配的$substring.${string##substring}從$string的開頭位置截掉最長匹配的$substring.例:#!/bin/bashstr="abcABC123ABCabc"echo ${str#a*C} #輸出123ABCabcecho ${str##a*C} #輸出abcecho ${str##a*1} #輸出23ABCabc${string%substring}從$string的結尾位置截掉最短匹配的$substring.${string%%substring}從$string的結尾位置截掉最長匹配的$substring.例:#!/bin/bashstr=abcABC123ABCabcecho ${str%b*c} #輸出 abcABC123ABCa echo ${str%%b*c} #輸出 a 6、子串替換${string/substring/replacement}使用$replacement來替換第一個匹配的$substring.${string//substring/replacement} 使用$replacement來替換所有匹配的$substring.${string/%substring/replacement}如果$substring匹配$string的結尾部分, 那么就用$replacement來替換$substring.${string/#substring/replacement}如果$substring匹配$string的開頭部分, 那么就用$replacement來替換$substring.例:#!/bin/bashstr="abcABC123ABCabc"echo ${str/ABC/&&&} #輸出 abc&&&123ABCabcecho ${str//ABC/&&&&} #輸出 abc&&&&123&&&&abcecho ${str/%abc/&&&} #輸出 abcABC123ABC&&&echo ${str/#abc/&&&} #輸出 &&&ABC123ABCabc
?
本文轉自張昺華-sky博客園博客,原文鏈接:http://www.cnblogs.com/sky-heaven/p/5681899.html,如需轉載請自行聯系原作者