字符串示例:
string=abcas2221111c
(1)字符串长度
echo ${#string} # 13
echo `expr length $string` #13
echo `expr "$string" : '.*'` #13
(2) 字串起始位置匹配子字串的长度
命令:
expr match "$string" '$substring'
expr "$string" : '$substring'
##$substring是一个正则表达式
示例:
echo `expr match "$string" '[a-z]*..2'` #8
echo `expr "$string" : '[a-z]*..2'` #8
(3)字串匹配子字串的第一个字符的位置
命令:
expr index $string $substring
示例:
echo `expr index "$string" 222` #6
echo `expr index "$string" 2bc` #2--在字串$string中先匹配到'b'字符其位置为2,'2'和'c'匹配都在其之后。
(4) 获取子字串
1、索引及位置提取方式
${string:$pos} ##在字串$string中从索引位$pos处开始提取子字串。
${string:$pos:$length} ##在字串$string中从索引位$pos处开始提取$length长度的子字串。
注:此处string换做"*"或"@",或其它数组变量,可以提取从索引位置为$pos起始的元素,到向后数,个数为$length的所有元素;不指定$length时,提取从$pos开始的直到最后的所有元素。
$pos:索引从左往右,0起始。
此处只做字符串的示例:
echo ${string:2} #cas2221111c
echo ${string:4:3} #s22
此处亦可反向截取
echo ${string:(-5)} #1111c
echo ${string: -5} #1111c ###此方式注意表达式内-5前必须添加一空格
expr substr $string $pos $length ##在字符串$string中从位置$pos开始提取$length长度的子字串。
$pos:位置值指字串从左往右,1起始
示例:
echo `expr substr $string 2 3` #bca
2、 使用字串正则表达式提取
expr match "$string" '\($substring\)'
expr "$string" : '\($substring\)'
##从字串$string开始,提取匹配$substring的子字串,$substring为一个正则表达式。
示例:
echo `expr match "$string" '\([a-z]*..[0-9]\)'` #abcas222
echo `expr "$string" : '\([a-z]*..[0-9]\)'` #abcas222
(5) 字串删除与替换
可参照另一篇博客日志:
http://bluebellecho.blog.163.com/blog/static/21258528220132611853936/