微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

shell 截取字符串

  • ${#var}
    获得字符串的长度
str="100%200%300"
echo ${#str}

11
  • ${var#[#]}
    截取字符串头部匹配的字符串,获取尾部子字符串
    ${var#} 最小限度的截取
    ${var##} 最大限度的截取
str="100%200%300%300%200%100"
echo "{str#1}=========="${str#1}
echo "{str#*0}=========="${str#*0}
echo "{str#0}=========="${str#0}
echo "{str##*3}=========="${str##*3}
echo "{str##*2}=========="${str##*2}


{str#1}==========00%200%300%300%200%100
{str#*0}==========0%200%300%300%200%100
{str#0}==========100%200%300%300%200%100
{str##*3}==========00%200%100
{str##*2}==========00%100

  • ${var%[%]}
    截取字符串尾部匹配的字符串,获取头部子字符串
    ${var%} 最小限度的截取
    ${var%%} 最大限度的截取
str="100%200%300%300%200%100"
echo "{str%0}=========="${str%0}
echo "{str%2*}=========="${str%2*}
echo "{str%%2*}=========="${str%%2*}

{str%0}==========100%200%300%300%200%10
{str%2*}==========100%200%300%300%
{str%%2*}==========100%

  • ${var:start[:len]}
    从左边start 截取 ,没有len参数即从start 位开始截取所有 ,有len参数即从start位开始截取len 个字符
str="100%200%300%300%200%100"
echo "{str:2}=========="${str:2}
echo "{str:2:5}=========="${str:2:5}

{str:2}==========0%200%300%300%200%100
{str:2:5}==========0%200
  • ${var:0-start[:len]}
    从右边start 截取 ,没有len参数即从右边start 位开始向后截取所有 ,有len参数即从start位开始向后截取len 个字符,start 不能超过字符串的长度
str="100%200%300%300%200%100"
echo "{str:0-20:5}=========="${str:0-20:5}
echo "{str:0-30:5}=========="${str:0-30:5}
echo "{str:0-4}=========="${str:0-4}


{str:0-20:5}==========%200%
{str:0-20:5}==========
{str:0-4}==========%100

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。