• Shell 字符串处理


    字符串处理方式

    • 计算字符串长度
    • 获取子串在字符串中的索引位置
    • 计算子串长度
    • 抽取(截取)字串

    1、计算字符串长度,有两种方式

      $ ${#string}

      $ expr length "$string"   // 如果 string 里面包含空格,则 $string 加上双引号,建议一直加上

      注意:mac没有 expr命令,xshell登陆 linux服务器可以执行 expr命令

    例1: 

      $ var="java python golang kafka"

      $ len=${#var}

      $ echo len

      打印结果:24

      $ len=`expr length "$var"`  // 这里要用反引号 ` ` 。

      $ echo $len

      打印结果:24 

    2、获取子串在字符串中的索引位置(本质上是 将子串拆分成很多单个的字符,然后看哪个字符最先在字符串中出现,则返回这个字符的索引位置)

      $ expr index $string $substring

    例2:

      $ var="quickstart is a app"

      $ ind=`expr index "$var" start`

      $ echo $ind

      打印结果:6    // 下标从 1 开始数

      $ ind=`expr index "$var" uniq`

      $ echo $ind

      打印结果:1     // 'q' 这个字符最先出现在字符串中,并且位置是 1

    3、获取子串的长度

      $ expr match $string substr

    例3:

      $ var="quickstart is a app"

      $ sub_len=`expr match "$var" app`     // 需要从头匹配,并且匹配成功,否则返回 0

      $ echo $sub_len   

      打印结果:0

      $ sub_len=`expr match "$var" quic`   // 正常匹配

      $ echo $sub_len

      打印结果:4

      $ sub_len=`expr match "$var" qui.*`      // 获取整个字符串的长度

      $ echo $sub_len

      打印结果:19

      $ sub_len=`expr match "$var" quik`   // 匹配失败

      $ echo $sub_len

      打印结果:0

    4、抽取子串,五种方式

      $ ${string:position}   // 从 string 的 position 开始

      $ ${string:position:length}   // 从 string 的 position 开始,取 length 个长度的字符

      $ ${string: -position}    // 从右边开始匹配,注意":" 和 "-" 之间有空格

      $ ${string:(position)}    // 从左边开始匹配

      $ expr substr $string $position $length  // 从 position 开始,匹配长度为length

    例4:

      $ var="java python golang kafka"

      $ substr1=${var:3}    // 下标从 0 开始,下标为 3 的字符刚好是 a

      $ echo $substr1

      打印结果:a python golang kafka

      $ substr2=${var:3:5}

      $ echo $substr2

      打印结果:a pyt

      $ substr3=${var: -5}    // 最后一个字符为 -1。  等价于:substr3=${var:(-5)} 

      $ echo $substr3

      打印结果:kafka  

      $ substr3_1=${var: -5:2}     // 扩展一个

      $ echo $substr3_1

      打印结果:ka

      $ substr4=${var:(5)}    // 从左边第5个开始取

      $ echo $substr4

      打印结果:python golang kafka 

      $ substr5=`expr substr "$var" 10 5`     // expr 下标从 1 开始,然后从第 10 个开始取

      $ echo $substr5

      打印结果:on go

    注意:expr 方式下标从 1 开始; ${ }方式下标从 0 开始

  • 相关阅读:
    Bessie Goes Moo
    小P的强力值
    Max Flow
    约瑟夫
    Moocryption
    杂务
    排行榜
    银行贷款
    轰炸
    Contaminated Milk
  • 原文地址:https://www.cnblogs.com/shenqidu/p/10567445.html
Copyright © 2020-2023  润新知