/* *此文參考地址:*////注意:本人使用ubuntu11.4,使用sh test 運行shell指令碼報錯,需使用/bin/bash test 運行才能得到正確的結果
shell中字串的截取
2010-06-24 00:40
str="abc123abcABC"
#計算字串的長度
echo ${#str} #12
#位置參數有關操作
echo ${#*} #位置參數的個數
echo ${#@} #位置參數的個數和上面的效果一樣
echo $* #把所有的位置參數作為一個字串輸出
echo $@ #效果同上
#字串截取
#
# ${string#substring}
# 從$string的左邊第一個字元截掉第一個匹配的$substring
# ${string##substring}
# 從$string的左邊第一個字元截掉最後一個個匹配的$substring
#
#從左邊開始
echo ${str#a*c} #a到c的最短匹配
echo ${str##a*c} #a到c的最長相符
#從右邊開始
echo ${str%a*C} #從右邊的最後一個字元開始尋找a到B的最短匹配
echo ${str%%a*B} #從右邊最後一個字元開始尋找a到B的最長相符
#這裡找不到模式
#==取子串==
# ${string:position}
# ${string:positon:length}
#
echo ${str:2} #從第2個位置開始提取字串的值
echo ${str:2:3} #從第2個位置開始提取長度為3個字元的值
#反向提取子串
echo ${str:(-2)} #從反向的第2個位置開始提取字串
echo ${str:(-2):6} #從反向的第2個字元的位置開始提取長度為6個字元的串(:(不可能把)
#總共的字元長度只有2個怎麼提取6個呢呵呵
echo ${str:(-6):3} #6個中提出3個總可以了把
#位置參數的提取
echo ${*:2} #從第二個位置參數開始提取後面所有位置參數的值
echo ${*:2:3} #從第二個位置參數開始提取3個位置參數的值
#=子串替換=
# ${string/substring/replacement}
# 使用$replacement來替換第一個匹配的$substring.
# ${string//substring/replacement}
# 使用$replacement來替換所有匹配的$substring.
#
# ${string/#substring/replacement}
# 如果$substring匹配$string的開頭部分,那麼就用$replacement來替換$substring.
# ${string/%substring/replacement}
# 如果$substring匹配$string的結尾部分,那麼就用$replacement來替換$substring.
#
str1="123abcABCab12"
echo ${str1/12/hover} #僅僅替換了第一個
echo ${str1//12/hover} #替換了所有的
echo ${str1/#12/hover} # 從頭開始匹配12,如果找到做替換
echo ${str1/%12/hover} # 從尾開始匹配12,如果找到做替換