字符串長度
- shell>echo ${#string}
- shell>expr length $string
- shell>expr "$string" : '.*'
shell>echo ${#string}
shell>expr length $string
shell>expr "$string" : '.*'
匹配字符串開頭的子串長度
- expr match "$string" '$substring'
- $substring 是一個正則表達(dá)式.
- expr "$string" : '$substring'
expr match "$string" '$substring'
$substring 是一個正則表達(dá)式.
expr "$string" : '$substring'
索引
- expr index $string $substring
expr index $string $substring
提取子串
- ${string:position}
- 在$string 中從位置$position開始提取子串.
- 如果$string 是"*"或者" @ ", 那么將會提取從位置$position開始的位置參數(shù). [1]
- ${string:position:length}
- 在$string 中從位置$position開始提取$length 長度的子串.
${string:position}
在$string 中從位置$position開始提取子串.
如果$string 是"*"或者" @ ", 那么將會提取從位置$position開始的位置參數(shù). [1]
${string:position:length}
在$string 中從位置$position開始提取$length 長度的子串.
- stringZ=abcABC123ABCabc
- # 0123456789.....
- # 0-based indexing.
- echo ${stringZ:0} # abcABC123ABCabc
- echo ${stringZ:1} # bcABC123ABCabc
- echo ${stringZ:7} # 23ABCabc
- echo ${stringZ:7:3} # 23A
- # 提取子串長度為3.
- # 能不能從字符串的右邊(也就是結(jié)尾)部分開始提取子串?
- echo ${stringZ:-4} # abcABC123ABCabc
- # 默認(rèn)是提取整個字符串, 就象${parameter:-default} 一樣.
- # 然而 . . .
- echo ${stringZ:(-4)} # Cabc
- echo ${stringZ: -4} # Cabc 注意,":"右邊有一個空格!
- # 這樣, 它就可以工作了.
- # 使用圓括號或者添加一個空格可以"轉(zhuǎn)義"這個位置參數(shù).
stringZ=abcABC123ABCabc
# 0123456789.....
# 0-based indexing.
echo ${stringZ:0} # abcABC123ABCabc
echo ${stringZ:1} # bcABC123ABCabc
echo ${stringZ:7} # 23ABCabc
echo ${stringZ:7:3} # 23A
# 提取子串長度為3.
# 能不能從字符串的右邊(也就是結(jié)尾)部分開始提取子串?
echo ${stringZ:-4} # abcABC123ABCabc
# 默認(rèn)是提取整個字符串, 就象${parameter:-default} 一樣.
# 然而 . . .
echo ${stringZ:(-4)} # Cabc
echo ${stringZ: -4} # Cabc 注意,":"右邊有一個空格!
# 這樣, 它就可以工作了.
# 使用圓括號或者添加一個空格可以"轉(zhuǎn)義"這個位置參數(shù).
如果$string 參數(shù)是"*"或" @ ", 那么將會從$position位置開始提取 $length 個位置參數(shù), 但是由于
可能沒有$length 個位置參數(shù)了, 那么就有幾個位置參數(shù)就提取幾個位置參數(shù).
- echo ${*:2} # 打印出第2個和后邊所有的位置參數(shù).
- echo ${@:2} # 同上.
- echo ${*:2:3} # 從第2個開始, 連續(xù)打印3個位置參數(shù).
echo ${*:2} # 打印出第2個和后邊所有的位置參數(shù).
echo ${@:2} # 同上.
echo ${*:2:3} # 從第2個開始, 連續(xù)打印3個位置參數(shù).
expr substr $string $position $length
在$string 中從$position開始提取$length 長度的子串.
- echo `expr substr $stringZ 1 2`
- echo `expr substr $stringZ 4 3`
echo `expr substr $stringZ 1 2`
echo `expr substr $stringZ 4 3`
expr match "$string" '\($substring\)'
從$string 的開始位置提取$substring , $substring 是正則表達(dá)式.
expr "$string" : '\($substring\)'
從$string 的開始位置提取$substring , $substring 是正則表達(dá)式.
- stringZ=abcABC123ABCabc
- # =======
- echo `expr match "$stringZ" '\(.[b-c]*[A-Z]..[0-9]\)'`
- echo `expr "$stringZ" : '\(.[b-c]*[A-Z]..[0-9]\)'`
- echo `expr "$stringZ" : '\(.......\)'`
- # 上邊的每個echo 都打印出相同的結(jié)果. abcABC1
stringZ=abcABC123ABCabc
# =======
echo `expr match "$stringZ" '\(.[b-c]*[A-Z]..[0-9]\)'`
echo `expr "$stringZ" : '\(.[b-c]*[A-Z]..[0-9]\)'`
echo `expr "$stringZ" : '\(.......\)'`
# 上邊的每個echo 都打印出相同的結(jié)果. abcABC1
expr match "$string" '.*\($substring\)'
從$string 的結(jié)尾提取$substring , $substring 是正則表達(dá)式.
expr "$string" : '.*\($substring\)'
從$string 的結(jié)尾提取$substring , $substring 是正則表達(dá)式.
- expr match "$stringZ" '.*\([A-C][A-C][A-C][a-c]*\)'
- ABCabc
- expr "$stringZ" : '.*\(......\)'
- ABCabc
expr match "$stringZ" '.*\([A-C][A-C][A-C][a-c]*\)'
ABCabc
expr "$stringZ" : '.*\(......\)'
ABCabc
子串削除
- ${string#substring}
- 從$string 的開頭位置截掉最短匹配的$substring .
- ${string##substring}
- 從$string 的開頭位置截掉最長匹配的$substring .
-
- ${string%substring}
- 從$string 的結(jié)尾位置截掉最短匹配的$substring .
- ${string%%substring}
- 從$string 的結(jié)尾位置截掉最長匹配的$substring .
-
- echo ${stringZ%b*c} # abcABC123ABCa
- # 從$stringZ 的結(jié)尾位置截掉'b' 到'c' 之間最短的匹配.
- echo ${stringZ%%b*c} #a
- # 從$stringZ 的結(jié)尾位置截掉'b' 到'c' 之間最長的匹配.
${string#substring}
從$string 的開頭位置截掉最短匹配的$substring .
${string##substring}
從$string 的開頭位置截掉最長匹配的$substring .
${string%substring}
從$string 的結(jié)尾位置截掉最短匹配的$substring .
${string%%substring}
從$string 的結(jié)尾位置截掉最長匹配的$substring .
echo ${stringZ%b*c} # abcABC123ABCa
# 從$stringZ 的結(jié)尾位置截掉'b' 到'c' 之間最短的匹配.
echo ${stringZ%%b*c} #a
# 從$stringZ 的結(jié)尾位置截掉'b' 到'c' 之間最長的匹配.
當(dāng)你需要構(gòu)造文件名的時候, 這個操作就顯得特別有用.
子串替換
- ${string/substring/replacement}
- 使用$replacement 來替換第一個匹配的$substring .
- ${string//substring/replacement}
- 使用$replacement 來替換所有匹配的$substring .
-
-
- ${string/#substring/replacement}
- 如果$substring 匹配$string 的開頭部分, 那么就用$replacement 來替換$substring .
- ${string/%substring/replacement}
- 如果$substring 匹配$string 的結(jié)尾部分, 那么就用$replacement 來替換$substring
億恩-天使(530997) 電話 037160135991 服務(wù)器租用,托管歡迎咨詢
本文出自:億恩科技【mszdt.com】
服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|