字符串长度
${#string}
expr length $string
expr “$string” : ‘.*’
string=abcABC123ABC321
echo ${#string} # 15
echo `expr length $string` # 15
echo `expr "$string" : '.*'` # 15
匹配字符串开头的子串长度
expr match “$string” ‘$substring’
$substring 是一个正则表达式.
expr “$string” : ‘$substring’
$substring 是一个正则表达式.
string=abcABC123ABCabc
echo `expr match "$string" 'abc[A-Z]*.2'` # 8
echo `expr "$string" : 'abc[A-Z]*.2'` # 8
索引
expr index $string $substring
在字符串$string中所匹配到的$substring第一次所出现的位置.
string=abcABC123ABCabc
echo `expr index "$string" c12` # 6
echo `expr index "$string" 1c` # 3
# 'c' (in #3 position) matches before '1'.
提取子串
${string:position}
在$string中从位置$position开始提取子串.
${string:position:length}
在 $string 中从位置 $position 开始提取 $length 长度的子串.
expr substr $string $position $length
在 $string 中从 $position 开始提取 $length 长度的子串.
expr match “$string” ‘\($substring\)’
从 $string 的开始位置提取 $substring ,$substring 是正则表达式.
expr “$string” : ‘\($substring\)’
从 $string 的开始位置提取$substring ,$substring 是正则表达式.
string=abcABC123ABCabc
echo `expr match "$string" '\(.[b-c]*[A-Z]..[0-9]\)'` #abcABC1
echo `expr "string" : '\(.[b-c]*[A-Z]..[0-9]\)'` #abcABC1
echo `expr "string" : \(.......\)` #abcABC1
expr match “$string” ‘.*\($substring\)’
从 $string 的结尾提取 $substring ,$substring 是正则表达式.
expr “$string” : ‘.*\($substring\)’
从 $string 的结尾提取 $substring ,$substring 是正则表达式.
string=abcABC123ABCabc
echo `expr match "string" '.*\([A-c][A-C][A-C][a-c]*\)'` #ABCabc
echo `expr "string" : '.*\(......\)'` #ABCabc
子串削除
${string#substring}
从 $string 的开头位置截掉最短匹配的 $substring .
${string##substring}
从 $string 的开头位置截掉最长匹配的 $substring .
${string%substring}
从 $string 的结尾位置截掉最短匹配的 $substring .
${string%%substring}
从 $string 的结尾位置截掉最长匹配的 $substring .
子串替换
${string/substring/replacement}
使用 $replacement 来替换第一个匹配的 $substring .
${string//substring/replacement}
使用 $replacement 来替换所有匹配的 $substring .
string=abcABC123ABCabc
echo ${string/abc/xyz} #xyzABC123ABCabc
echo ${string//abc/xyz} #xyzABC123ABCxyz
${string/#substring/replacement}
如果 $substring 匹配 $string 的开头部分, 那么就用 $replacement 来替换 $substring .
${string/%substring/replacement}
如果 $substring 匹配 $string 的结尾部分, 那么就用 $replacement 来替换 $substring .
string=abcABC123ABCabc
echo ${string/#abc/XYZ} #XYZABC123ABCabc
echo ${string/%abc/XYZ} #abcABC123ABCXYZ
使用awk来处理字符串
Bash脚本也可以调用awk的字符串操作功能来代替它自己内建的字符串操作.