美文网首页
bash字符串操作的%/%%/#/##操作符

bash字符串操作的%/%%/#/##操作符

作者: CodingCode | 来源:发表于2021-06-28 08:56 被阅读0次
    1. 删除最短的前缀匹配子串:#

    格式:${str#${prefix}}

    从<str>的最左边开始匹配<prefix>,一旦满足,则删除匹配上的子串。

    ################### = "aabaabABBABB"
    ${aabaabABBABB#a}   =  "abaabABBABB"    # match="a"
    ${aabaabABBABB#aa}  =   "baabABBABB"    # match="aa"
    ${aabaabABBABB#aab} =    "aabABBABB"    # match="aab"
    ${aabaabABBABB#ab}  = "aabaabABBABB"    # match=""
    
    #################### = "aabaabABBABB"
    ${aabaabABBABB#*a}   =  "abaabABBABB"    # match="a"
    ${aabaabABBABB#*aa}  =   "baabABBABB"    # match="aa"
    ${aabaabABBABB#*aab} =    "aabABBABB"    # match="aab"
    ${aabaabABBABB#*ab}  =    "aabABBABB"    # match="aab"
    
    #################### = "aabaabABBABB"
    ${aabaabABBABB#a*}   =  "abaabABBABB"    # match="a"
    ${aabaabABBABB#aa*}  =   "baabABBABB"    # match="aa"
    ${aabaabABBABB#aab*} =    "aabABBABB"    # match="aab"
    ${aabaabABBABB#ab*}  = "aabaabABBABB"    # match=""
    

    我们看到把*放在后面,结果和没有*是一样的,可以这么理解,因为#运算符本来就是前缀匹配,设想自动就带有*左右结尾。

    1. 删除最长的前缀匹配子串:##
    #################### = "aabaabABBABB"
    ${aabaabABBABB##a}   =  "abaabABBABB"    # match="a"
    ${aabaabABBABB##aa}  =   "baabABBABB"    # match="aa"
    ${aabaabABBABB##aab} =    "aabABBABB"    # match="aab"
    ${aabaabABBABB##ab}  = "aabaabABBABB"    # match=""
    
    ####################  = "aabaabABBABB"
    ${aabaabABBABB##*a}   =      "bABBABB"    # match="aabaa"
    ${aabaabABBABB##*aa}  =      "bABBABB"    # match="aabaa"
    ${aabaabABBABB##*aab} =       "ABBABB"    # match="aabaab"
    ${aabaabABBABB##*ab}  =       "ABBABB"    # match="aabaab"
    
    ##################### =   "aabaabABBABB"
    ${aabaabABBABB##a*}   =   ""              # match="aabaabABBABB"
    ${aabaabABBABB##aa*}  =   ""              # match="aabaabABBABB"
    ${aabaabABBABB##aab*} =   ""              # match="aabaabABBABB"
    ${aabaabABBABB##ab*}  =   "aabaabABBABB"  # match=""
    
    1. 删除最短的后缀匹配子串:%
    ################### = "aabaabBAABAA"
    ${aabaabBAABAA%A}   = "aabaabBAABA"    # match="A"
    ${aabaabBAABAA%AA}  = "aabaabBAAB"     # match="AA"
    ${aabaabBAABAA%BAA} = "aabaabBAA"      # match="BAA"
    ${aabaabBAABAA%AB}  = "aabaabBAABAA"   # match=""
    
    #################### = "aabaabBAABAA"
    ${aabaabBAABAA%*A}   = "aabaabBAABA"    # match="A"
    ${aabaabBAABAA%*AA}  = "aabaabBAAB"     # match="AA"
    ${aabaabBAABAA%*BAA} = "aabaabBAA"      # match="BAA"
    ${aabaabBAABAA%*AB}  = "aabaabBAABAA"   # match=""
    
    #################### = "aabaabBAABAA"
    ${aabaabBAABAA%A*}   = "aabaabBAABA"    # match="A"
    ${aabaabBAABAA%AA*}  = "aabaabBAAB"     # match="AA"
    ${aabaabBAABAA%BAA*} = "aabaabBAA"      # match="BAA"
    ${aabaabBAABAA%AB*}  = "aabaabBA"       # match="ABAA"
    
    1. 删除最长的后缀匹配子串:%%
    ################### = "aabaabBAABAA"
    ${aabaabBAABAA%%A}   = "aabaabBAABA"    # match="A"
    ${aabaabBAABAA%%AA}  = "aabaabBAAB"     # match="AA"
    ${aabaabBAABAA%%BAA} = "aabaabBAA"      # match="BAA"
    ${aabaabBAABAA%%AB}  = "aabaabBAABAA"   # match=""
    
    #################### = "aabaabBAABAA"
    ${aabaabBAABAA%%*A}   = ""              # match="aabaabBAABAA"
    ${aabaabBAABAA%%*AA}  = ""              # match="aabaabBAABAA"
    ${aabaabBAABAA%%*BAA} = ""              # match="aabaabBAABAA"
    ${aabaabBAABAA%%*AB}  = "aabaabBAABAA"  # match=""
    
    #################### = "aabaabBAABAA"
    ${aabaabBAABAA%%A*}   = "aabaabB"        # match= "AABAA"
    ${aabaabBAABAA%%AA*}  = "aabaabB"        # match= "AABAA"
    ${aabaabBAABAA%%BAA*} = "aabaab"         # match="BAABAA"
    ${aabaabBAABAA%%AB*}  = "aabaabBA"       # match=  "ABAA"
    

    相关文章

      网友评论

          本文标题:bash字符串操作的%/%%/#/##操作符

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