AI智能
改变未来

shell 字符串截取

截取分隔符右边的字符串:

  1. ${var#*/} 截取左边算起第一个“/”右边的所有字符
  2. ${var#*/} 截取左边算起最后一个“/”右边的所有字符

截取分隔符左边的字符串:

  1. ${var%/*} 截取右边算起第一个“/”左边的所有字符
  2. ${var%%/*} 截取右边算起最后一个“/”左边的所有字符

按字符位置截取字符串:index 从0开始,负数表示从右边算起的位置

  1. ${var:index:number} 位置index开始number个字符
  2. ${var:index} 位置index开始到右边最后所有字符
# test=\'a/b/c/d\'# echo ${test#*/}b/c/d# echo ${test##*/}d# echo ${test%/*}a/b/c# echo ${test%%/*}a

使用pattern:
从右边开始匹配:
${var%pattern},
${var%%pattern}
从左边开始匹配
${var#pattern},
${var##pattern}
表示最短匹配,匹配到就停止,非贪婪
${var%pattern},
${var#pattern}
是最长匹配
${var%%pattern},
${var##pattern}

只有在pattern中使用了通配符才能有最长最短的匹配,否则没有最 长最短匹配之分
结构中的pattern支持通配符
*表示零个或多个任意字符
?表示零个或一个任意字符
[…]表示匹配中括号里面的字符
[!..]表示不匹配中括号里面的字符

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » shell 字符串截取