• shell中的字符串操作


    SHELL字符串操作

    bash Shell提供了多种字符串处理的命令:

    • awk命令
    • expr命令

    字符串长度

    • ${#..}
    • expr length
    • awk的length(s)
      实例:
      string=”hello world”
      ${#string}
      expr length “$string”
      注意:双引號是必须的。由于字符串有空格

    匹配子串

    格式:expr match $string $substring
    作用:在string的开头匹配substring,返回匹配到的长度,在string开头匹配不到substring则返回0,substring能够是正則表達式
    string=”welcome to our world”

    命令 返回值
    expr match “$string” w.* 20
    expr match “$string” ou.* 0

    公共字符的索引

    格式:expr index $string $sunstring
    作用:在字符串string上匹配substring中字符第一次出现的字符
    string=”welcome to our world”

    命令 返回值
    expr index “$string” our 5
    expr index “$string” d 20
    expr index “$string” s 0

    执行发现。expr index的功能是寻找两个串之间的第一个公共字符

    截取子串

    • 从左截取
      • ${string:position}
      • ${string:position:length}
    • 从右截取
      • ${string: -position}(冒号后面有一个空格)
      • ${string:(position)}
      • ${string: -position:length}
      • ${string:(position):length}

    expr substr
    格式:expr substr $string $position $length
    ${}的差别:${}的position从0開始给string标号;expr sutstr的position从1開始给string标号
    string=”welcome to our world”

    命令 返回值
    echo ${string:1:8} elcome t
    expr substr “$string” 2 8 elcome t

    正則表達式截取子串
    使用正則表達式仅仅能抽取string开头处或结尾处的子串。
    - expr match $string ‘($substring)’
    - expr $string : ‘($substring)’

    命令 返回值
    expr match “$another” “[0-9]*” 8
    expr match “$another” “([0-9]*)” 20091114
    expr “$another” : “([0-9]*)” 20091114

    注意:冒号两側有空格

    删除子串

    • ${string#substring}
      删除string开头处与substring匹配的最短子串
    • ${string##substring}
      删除string开头处与substring匹配的最长子串
    • ${string%substring}
      删除string结尾处与substring匹配的最短子串
    • ${string%%substring}
    • 删除string结尾处与substring匹配的最长子串

    substring并不是正則表達式
    20091114 Reading Hadoop

    命令 结果
    echo “${another#2*1}” 114 Reading Hadoop
    echo “${another##2*1}” 4 Reading Hadoop
    echo “${another%a*p}” 20091114 Reading H
    echo “${another%%a*p}” 20091114 Re

    替换子串

    • ${string/substring/replacement}
      仅替换第一次与substring相匹配的子串
    • ${string//substring/replacement}
      替换全部与substring相匹配的子串
    • ${string/#substring/replacement}
      替换string开头处与substring相匹配的子串
    • ${string/%substring/replacement}
      替换string结尾处与substring相匹配的子串

    string=”20001020year20050509month”

    命令 结果
    echo ${string/200/201} 20101020year20050509month
    echo ${string/200/201} 20101020year20150509month
    echo ${string/r*h/} 20001020yea
    echo ${string/#2000/2010} 20101020year20050509month
    echo ${string/%month/MONTH} 20001020year20050509MONTH
  • 相关阅读:
    理解 Java 构造函数不可以继承
    jsp页面表单还可以声明为date类型
    数据返回(数据共享,即从后端返回到前端调用,四种(requesst、ModelAndView、Model、Map))
    SpringMVC实现Action的两种方式以及与Struts2的区别
    视图解析器InternalResourceViewResolver在什么情况下需要配置?在什么情况下不需要配置?
    日期格式转换
    【SpringMVC框架】非注解的处理器映射器和适配器
    springmvc中的web.xml配置(包含中文乱码解决)
    Spring 7大功能模块的作用[转]
    python
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/7306268.html
Copyright © 2020-2023  润新知