shell中字符串操作【转】

转自:http://blog.chinaunix.net/uid-29091195-id-3974751.html

我们所遇到的编程语言中(汇编除外)都少不了字符串处理函数吧,
当然shell编程也不例外咯,那么下面我们一起来看下shell中字符串
处理的相关操作吧。大概下面的字符串操作可以分为两种类型,一种
属于变量替换,另一种属于继承unix expr命令吧!
  

  
1、测试字符串长度

    ${#string}
    expr length $string
    expr "$string" : '.*'
    例:
        #!/bin/bash
        str="asfd"
        echo "${#str}"
        a=expr length $str
        echo "a=$a"
        a=0
        a=`expr "$str" : '.*'`
        echo "a=$a"

2、匹配字符串开头的子串长度
    expr match "$string" '$substring'
    $substring是一个正则表达式.
    expr "$string" : '$substring'
    $substring是一个正则表达式.
    例:
        #!/bin/bash
        str=abcABC123ABCabc
        echo `expr match "$str" 'abc[A-Z]*.2'`     # 8
        echo `expr "$str" : 'abc[A-Z]*.2'`          # 8

3、索引
    expr index $string $substring
    在字符串$string中所匹配到的$substring第一次所出现的位置.
    例:
        #!/bin/bash
        str=abcABC123ABCabc
        echo `expr index "$str" C`     # 6     C 字符的位置.
        echo `expr index "$str" c`     # 3
        

4、提取子串
    ${string:position}
    在$string中从位置$position开始提取子串。
    如果$string是"*"或者"@", 那么将会提取从位置$position开始的位置参数. [1]
    ${string:position:length}
    在$string中从位置$position开始提取$length长度的子串.
    例:
        #!/bin/bash
        str="abcABC123ABCabc"

        echo ${str:0}            #输出abcABC123ABCabc
        echo ${str:3}            #输出ABC123ABCabc 
        echo ${str:6:3}            #输出123

5、子串削除
    ${string#substring}
    从$string的开头位置截掉最短匹配的$substring.
    ${string##substring}
    从$string的开头位置截掉最长匹配的$substring.
    例:
        #!/bin/bash
        str="abcABC123ABCabc"

        echo ${str#a*C}            #输出123ABCabc
        echo ${str##a*C}        #输出abc
        echo ${str##a*1}        #输出23ABCabc
    
    ${string%substring}
    从$string的结尾位置截掉最短匹配的$substring.
    ${string%%substring}
    从$string的结尾位置截掉最长匹配的$substring.
    例:
        #!/bin/bash
        str=abcABC123ABCabc

        echo ${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/bash
        str="abcABC123ABCabc"

        echo ${str/ABC/&&&}        #输出 abc&&&123ABCabc
        echo ${str//ABC/&&&&}    #输出 abc&&&&123&&&&abc
        echo ${str/%abc/&&&}    #输出 abcABC123ABC&&&
        echo ${str/#abc/&&&}     #输出 &&&ABC123ABCabc

 

posted @ 2016-07-18 16:56  Sky&Zhang  阅读(854)  评论(0编辑  收藏  举报