美文网首页
字符串操作

字符串操作

作者: rochestor | 来源:发表于2017-10-16 08:16 被阅读8次

    注意不同的字符串索引系统:
    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
    
    
    # 能不能从字符串的右边(也就是结尾)部分开始提取子串? 
    echo ${stringZ:-4}                           # abcABC123ABCabc
    # 默认是提取整个字符串, 就象${parameter:-default}一样.
    
     echo ${stringZ:(-4)}                         # Cabc ,使用  "()"  转义
     echo ${stringZ: -4}                         # Cabc ,:后面有一个空格
    # 使用圆括号或者添加一个空格可以"转义"这个位置参数.
    
    #如果$string参数是"*"或"@", 那么将会从$position位置开始提取$length个位置参数, 但是由于可能没有$length个位置参数了, 那么就有几个位置参数就提取几个位置参数.
    
    echo ${*:2}          # 打印出第2个和后边所有的位置参数
    echo ${@:2}          # 同上.
    echo ${*:2:3}        # 从第2个开始, 连续打印3个位置参数
    

    expr substr $string $position $length

    # 在$string中从$position开始提取$length长度的子串
    # 位置参数从0开始计数
    
    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'之间最长的匹配字符串.
    

    删除从结尾匹配的最短子串 ${string%substring}

    stringZ=abcABC123ABCabc
    echo ${stringZ%b*c}      # abcABC123ABCa
    

    删除从结尾匹配的最长子串 ${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的结尾部分, 那么就用$replacement来替换$substring
    # ${string/%substring/replacement}
    stringZ=abcABC123ABCabc
    # 用'XYZ'替换结尾的'abc'
    echo ${stringZ/%abc/XYZ}          # abcABC123ABCXYZ
    
    

    全部子串替换 ${string//substring/replacement}

    # 使用$replacement来替换所有匹配的$substring
    stringZ=abcABC123ABCabc
     # 用'xyz'来替换所有匹配的'abc'.
    echo ${stringZ//abc/xyz}          # xyzABC123ABCxyz
    

    唯爱与技术不可辜负

    相关文章

      网友评论

          本文标题:字符串操作

          本文链接:https://www.haomeiwen.com/subject/uhrhuxtx.html