zoukankan      html  css  js  c++  java
  • shell 进阶之匹配字符串

     

      一,操作字符串

      1,字符串长度

        expr 命令取字符串函数

        

        自带shell函数读取

        

      2,匹配字符串开头字串的长度  

       !!!!!!!!!!!!$substring正则表达式.!!!!!!!!!

        expr 格式  expr match "$string" '$substring'

               expr "$string" : '$substring'

        

      3,索引

        格式

        expr index $string $substring

        

        求出第一次出现的位置

      4,提取子串

        1)格式:${string:position}

        

          第五个字符开始取道最后

          2)格式:${string:position:length}

        

        从第五个字符开始取并且只取5个

        反着取

        

        上面的情况都不可以的,所以反着取只能这样取

        3)格式 expr substr $string $position $length

        

        从某个位置取多长

           4)expr match "$string" '($substring)'      expr "$string" : '($substring)' 

        从什么地方取什么东西

        

        5)expr match "$string" '.*($substring)'

        从结尾提取匹配的正则字符

        

        5,字符串消除 

        1)${string#substring}  

        

        最短匹配的字符清除

        2)${string##substring}

         

         最长的字符消除

        3)${string%substring} 

        

        结尾的位置截取最短匹配的字符

        4)${string%%substring}

        

        从结尾位置截取最长的字符,贪婪匹配

        6,字符转替换

        1)${string/substring/replacement}

        

        惰性匹配只匹配一次内容并且替换

        2)${string//substring/replacement}

        

        全局匹配全部替换

        3)${string/#substring/replacement}

        

        如果开头匹配到了的话就只在开头替换

        4)${string/%substring/replacement}

        

        如果结尾匹配到了的话就只在结尾替换

        5)${!varprefix*}

        

        6)${!varprefix@}

          

              

        7, 参数替换

        1)${parameter-default}

          如果变量parameter没被声明, 那么就使用默认值

          

         2)${parameter:-default}

          如果变量parameter没被设置, 那么就使用默认值

          

      这两个的区别是什么呢

         

        welcom 并没有被声明,就是没有在命令行或者执行赋值操作

        

        这样的话welcom被声明了但是没有设置值

        所以前一个读取的是他的空值,应为已经声明了

        后一个声明完了没有设置他的值所以应用whoami的变量

        3)  ${parameter=default}

          如果变量parameter没声明, 那么就把它的值设为default.

          这个看起来一样但是仔细想想上一个是应用他的值这个是设置为这个值

          同样也有

          ${parameter:=default} -- 如果变量parameter没设置, 那么就把它的值设为default.

        4)${parameter+alt_value}, ${parameter:+alt_value}

    ${parameter:+alt_value} -- 如果变量parameter被设置了, 那么就使用alt_value, 否则就使用null字符串.

    ${parameter+alt_value} -- 如果变量parameter被声明了, 那么就使用alt_value, 否则就使用null字符串.

      如果设置了值的话就用后面的值,没有设置就用空值

    5)${parameter?err_msg}, ${parameter:?err_msg}

    ${parameter?err_msg} -- 如果parameter已经被声明, 那么就使用设置的值, 否则打印err_msg错误消息.

    ${parameter:?err_msg} -- 如果parameter已经被设置, 那么就使用设置的值, 否则打印err_msg错误消息.

       

      

          

     

  • 相关阅读:
    JavaWeb-RESTful(一)_RESTful初认识
    【算法】简单题_球弹跳高度的计算
    【算法】简单题_鸡兔同笼问题
    【算法】贪心算法_节目时间安排问题
    SVN_SVN的基本认识
    JavaWeb_(视频网址)_二、用户模块1 注册登陆
    【知识库】-数据库_MySQL性能分析之Query Optimizer
    【知识库】-数据库_MySQL之高级数据查询:去重复、组合查询、连接查询、虚拟表
    【知识库】-数据库_MySQL之基本数据查询:子查询、分组查询、模糊查询
    【知识库】-数据库_MySQL常用SQL语句语法大全示例
  • 原文地址:https://www.cnblogs.com/kingle-study/p/9550776.html
Copyright © 2011-2022 走看看