始创于2000年 股票代码:831685
咨询热线:0371-60135900 注册有礼 登录
  • 挂牌上市企业
  • 60秒人工响应
  • 99.99%连通率
  • 7*24h人工
  • 故障100倍补偿
您的位置: 网站首页 > 帮助中心>文章内容

shell字符串处理

发布时间:  2012/9/15 20:37:16

字符串长度

  1. shell>echo ${#string}  
  2. shell>expr length $string  
  3. shell>expr "$string" : '.*'  

 

匹配字符串开头的子串长度

  1. expr match "$string" '$substring'  
  2.      $substring 是一个正则表达式.  
  3. expr "$string" : '$substring'  

 

索引

  1. expr index $string $substring  

 

提取子串

  1. ${string:position}  
  2.      在$string 中从位置$position开始提取子串.  
  3.      如果$string 是"*"或者" @ ", 那么将会提取从位置$position开始的位置参数. [1]  
  4. ${string:position:length}  
  5.      在$string 中从位置$position开始提取$length 长度的子串.  
  1. stringZ=abcABC123ABCabc  
  2. #       0123456789.....  
  3. #       0-based indexing.  
  4. echo ${stringZ:0}                     # abcABC123ABCabc  
  5. echo ${stringZ:1}                     # bcABC123ABCabc  
  6. echo ${stringZ:7}                     # 23ABCabc  
  7. echo ${stringZ:7:3}                   # 23A  
  8.                                        # 提取子串长度为3.  
  9. # 能不能从字符串的右边(也就是结尾)部分开始提取子串?  
  10. echo ${stringZ:-4}                    # abcABC123ABCabc  
  11. # 默认是提取整个字符串, 就象${parameter:-default} 一样.  
  12. # 然而 . . .  
  13. echo ${stringZ:(-4)}                  # Cabc  
  14. echo ${stringZ: -4}                   # Cabc 注意,":"右边有一个空格!  
  15. # 这样, 它就可以工作了.  
  16. # 使用圆括号或者添加一个空格可以"转义"这个位置参数.  


如果$string 参数是"*"或" @ ", 那么将会从$position位置开始提取 $length 个位置参数, 但是由于
可能没有$length 个位置参数了, 那么就有几个位置参数就提取几个位置参数.

  1. echo ${*:2}  # 打印出第2个和后边所有的位置参数.  
  2. echo ${@:2}  # 同上.  
  3. echo ${*:2:3}  # 从第2个开始, 连续打印3个位置参数.  

 

expr substr $string $position $length
     在$string 中从$position开始提取$length 长度的子串.

  1. echo `expr substr $stringZ 1 2`  
  2. echo `expr substr $stringZ 4 3`  


expr match "$string" '\($substring\)'
     从$string 的开始位置提取$substring , $substring 是正则表达式.
expr "$string" : '\($substring\)'
     从$string 的开始位置提取$substring , $substring 是正则表达式.
 

  1. stringZ=abcABC123ABCabc  
  2. #       =======  
  3. echo `expr match "$stringZ" '\(.[b-c]*[A-Z]..[0-9]\)'`  
  4. echo `expr "$stringZ" : '\(.[b-c]*[A-Z]..[0-9]\)'`  
  5. echo `expr "$stringZ" : '\(.......\)'`  
  6. # 上边的每个echo 都打印出相同的结果.  abcABC1  



expr match "$string" '.*\($substring\)'
     从$string 的结尾提取$substring , $substring 是正则表达式.
expr "$string" : '.*\($substring\)'
     从$string 的结尾提取$substring , $substring 是正则表达式.

  1. expr match "$stringZ" '.*\([A-C][A-C][A-C][a-c]*\)'  
  2. ABCabc  
  3. expr "$stringZ" : '.*\(......\)'  
  4. ABCabc  


子串削除

  1. ${string#substring}  
  2.      从$string 的开头位置截掉最短匹配的$substring .  
  3. ${string##substring}  
  4.      从$string 的开头位置截掉最长匹配的$substring .  
  5.   
  6. ${string%substring}  
  7.      从$string 的结尾位置截掉最短匹配的$substring .  
  8. ${string%%substring}  
  9.      从$string 的结尾位置截掉最长匹配的$substring .  
  10.   
  11. echo ${stringZ%b*c}        # abcABC123ABCa  
  12. # 从$stringZ 的结尾位置截掉'b' 到'c' 之间最短的匹配.  
  13. echo ${stringZ%%b*c}     #a  
  14. # 从$stringZ 的结尾位置截掉'b' 到'c' 之间最长的匹配.  


当你需要构造文件名的时候, 这个操作就显得特别有用.

子串替换

  1. ${string/substring/replacement}  
  2.      使用$replacement 来替换第一个匹配的$substring .  
  3. ${string//substring/replacement}  
  4.      使用$replacement 来替换所有匹配的$substring .  
  5.   
  6.   
  7. ${string/#substring/replacement}  
  8.      如果$substring 匹配$string 的开头部分, 那么就用$replacement 来替换$substring .  
  9. ${string/%substring/replacement}  
  10.      如果$substring 匹配$string 的结尾部分, 那么就用$replacement 来替换$substring   
亿恩-天使(530997) 电话 037160135991 服务器租用,托管欢迎咨询
 

本文出自:亿恩科技【www.enkj.com】

服务器租用/服务器托管中国五强!虚拟主机域名注册顶级提供商!15年品质保障!--亿恩科技[ENKJ.COM]

  • 您可能在找
  • 亿恩北京公司:
  • 经营性ICP/ISP证:京B2-20150015
  • 亿恩郑州公司:
  • 经营性ICP/ISP/IDC证:豫B1.B2-20060070
  • 亿恩南昌公司:
  • 经营性ICP/ISP证:赣B2-20080012
  • 服务器/云主机 24小时售后服务电话:0371-60135900
  • 虚拟主机/智能建站 24小时售后服务电话:0371-60135900
  • 专注服务器托管17年
    扫扫关注-微信公众号
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 亿恩科技 版权所有  地址:郑州市高新区翠竹街1号总部企业基地亿恩大厦  法律顾问:河南亚太人律师事务所郝建锋、杜慧月律师   京公网安备41019702002023号
      0
     
     
     
     

    0371-60135900
    7*24小时客服服务热线