转自:http://blog.chinaunix.net/uid-29091195-id-3974751.html
我们所遇到的编程语言中(汇编除外)都少不了字符串处理函数吧,
当然shell编程也不例外咯,那么下面我们一起来看下shell中字符串
处理的相关操作吧。大概下面的字符串操作可以分为两种类型,一种
属于变量替换,另一种属于继承unix expr命令吧!
1、测试字符串长度${#string}expr length $stringexpr "$string" : '.*'例:#!/bin/bashstr="asfd"echo "${#str}"a=expr length $strecho "a=$a"a=0a=`expr "$str" : '.*'`echo "a=$a"2、匹配字符串开头的子串长度expr match "$string" '$substring'$substring是一个正则表达式.expr "$string" : '$substring'$substring是一个正则表达式.例:#!/bin/bashstr=abcABC123ABCabcecho `expr match "$str" 'abc[A-Z]*.2'` # 8echo `expr "$str" : 'abc[A-Z]*.2'` # 83、索引expr index $string $substring在字符串$string中所匹配到的$substring第一次所出现的位置.例:#!/bin/bashstr=abcABC123ABCabcecho `expr index "$str" C` # 6 C 字符的位置.echo `expr index "$str" c` # 34、提取子串${string:position}在$string中从位置$position开始提取子串。如果$string是"*"或者"@", 那么将会提取从位置$position开始的位置参数. [1]${string:position:length}在$string中从位置$position开始提取$length长度的子串.例:#!/bin/bashstr="abcABC123ABCabc"echo ${str:0} #输出abcABC123ABCabcecho ${str:3} #输出ABC123ABCabc echo ${str:6:3} #输出1235、子串削除${string#substring}从$string的开头位置截掉最短匹配的$substring.${string##substring}从$string的开头位置截掉最长匹配的$substring.例:#!/bin/bashstr="abcABC123ABCabc"echo ${str#a*C} #输出123ABCabcecho ${str##a*C} #输出abcecho ${str##a*1} #输出23ABCabc${string%substring}从$string的结尾位置截掉最短匹配的$substring.${string%%substring}从$string的结尾位置截掉最长匹配的$substring.例:#!/bin/bashstr=abcABC123ABCabcecho ${str%b*c} #输出 abcABC123ABCa echo ${str%%b*c} #输出 a 6、子串替换${string/substring/replacement}使用$replacement来替换第一个匹配的$substring.${string//substring/replacement} 使用$replacement来替换所有匹配的$substring.${string/%substring/replacement}如果$substring匹配$string的结尾部分, 那么就用$replacement来替换$substring.${string/#substring/replacement}如果$substring匹配$string的开头部分, 那么就用$replacement来替换$substring.例:#!/bin/bashstr="abcABC123ABCabc"echo ${str/ABC/&&&} #输出 abc&&&123ABCabcecho ${str//ABC/&&&&} #输出 abc&&&&123&&&&abcecho ${str/%abc/&&&} #输出 abcABC123ABC&&&echo ${str/#abc/&&&} #输出 &&&ABC123ABCabc
本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/sky-heaven/p/5681899.html,如需转载请自行联系原作者