zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    PHP实现对站点内容外部链接的过滤方法
    PHP常用技术文之文件操作和目录操作总结
    PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
    PHP如何快速读取大文件
    php使用json_encode后出现中文乱码的解决方法
    redis在PHP中的基本使用
    等差数列的概念和性质
    构造数列中的常见变形总结
    用几何画板制作函数图像的动态伸缩效果
    用几何画板制作函数图像的动态平移效果
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/7306268.html
Copyright © 2011-2022 走看看