注意不同的字符串索引系統(tǒng):
Bash的第一個字符是從'0'開始記錄的.
Awk的第一個字符是從'1'開始記錄的.
${#variable} 字符串長度
stringZ=abcABC123ABCabc
echo ${#stringZ} # 15
echo `expr length $stringZ` # 15
${string:position} ${string:position:length}
# 提取子字符串
stringZ=abcABC123ABCabc
echo ${stringZ:0} # abcABC123ABCabc
echo ${stringZ:1} # bcABC123ABCabc
# 能不能從字符串的右邊(也就是結(jié)尾)部分開始提取子串?
echo ${stringZ:-4} # abcABC123ABCabc
# 默認是提取整個字符串, 就象${parameter:-default}一樣.
echo ${stringZ:(-4)} # Cabc ,使用 "()" 轉(zhuǎn)義
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ù)
expr substr $string $position $length
# 在$string中從$position開始提取$length長度的子串
# 位置參數(shù)從0開始計數(shù)
stringZ=abcABC123ABCabc
echo `expr substr $stringZ 1 2` # ab
echo `expr substr $stringZ 4 3` # ABC
從開頭刪除最短子串 ${string#substring}
stringZ=abcABC123ABCabc
echo ${stringZ#a*C} # 123ABCabc
從開頭刪除最長子串 ${string##substring}
stringZ=abcABC123ABCabc
echo ${stringZ##a*C} # abc
# 截掉'a'到'C'之間最長的匹配字符串.
刪除從結(jié)尾匹配的最短子串 ${string%substring}
stringZ=abcABC123ABCabc
echo ${stringZ%b*c} # abcABC123ABCa
刪除從結(jié)尾匹配的最長子串 ${string%%substring}
stringZ=abcABC123ABCabc
echo ${stringZ%%b*c} # a
子串替換 ${string/substring/replacement}
# 使用$replacement來替換第一個匹配的$substring.
stringZ=abcABC123ABCabc
# 使用'xyz'來替換第一個匹配的'abc'
echo ${stringZ/abc/xyz} # xyzABC123ABCabc
# 如果$substring匹配$string的開頭部分, 那么就用$replacement來替換$substring
# ${string/#substring/replacement}
stringZ=abcABC123ABCabc
# 用'XYZ'替換開頭的'abc'
echo ${stringZ/#abc/XYZ} # XYZABC123ABCabc
# 如果$substring匹配$string的結(jié)尾部分, 那么就用$replacement來替換$substring
# ${string/%substring/replacement}
stringZ=abcABC123ABCabc
# 用'XYZ'替換結(jié)尾的'abc'
echo ${stringZ/%abc/XYZ} # abcABC123ABCXYZ
全部子串替換 ${string//substring/replacement}
# 使用$replacement來替換所有匹配的$substring
stringZ=abcABC123ABCabc
# 用'xyz'來替換所有匹配的'abc'.
echo ${stringZ//abc/xyz} # xyzABC123ABCxyz
唯愛與技術不可辜負