yanfei 发表于 2018-8-22 09:56:46

Shell 编程 <字符串处理>

  

  
字符串切片:
  
    ${var:offset:number}            #offset表示从哪个字符开始,number表示取几个字符
  
      url=www.baidu.com
  
      echo ${url:4:5}-> baidu
  
      echo ${url:4}->baidu.com
  
    ${var: -number}                  #表示从右往左取几个字符,注意” - “前面必须有空格
  

  
基于模式的取串:
  
    ${var#*word}                  #表示从左至右,删除到第一个被word匹配字符中间所有的字符串
  
      url=www.baidu.com
  
      echo${url#*.}   ->baidu.com
  

  
    ${var##*word}                   #表示从左至右,删除到最后一个被word匹配字符中间所有的字符串
  
      url=www.baidu.com
  
      echo${url##*.}   ->com
  

  
    ${var%word*}                      #表示自右往左,删除到第一个匹配word的字符串
  
      path=’/etc/selinux/config’
  
      echo ${path%/*} -> /etc/selinux #取路径名
  
    ${var%%word*}                      #表示自右往左,删除到最后一个匹配word的字符串
  

  

  

  
查找替换:
  

  
${var/pattern/substr}                   #表示将被pattern第一次匹配的字符替换为substr
  
    url=www.baidu.com
  
    echo ${url/www/mail}->mail.baidu.com
  
${var//pattern/substr}                   #表示此行中所有被pattern匹配的字符都替换为subtr
  
    url=www.baidu.com.cc
  
    echo=${url//./_}   ->www_baidu_com_cc
  

  
${var/#pattern/substr}   #行首锚定,只匹配出现在行首的字符
  
${var/%pattern/substr}   #行位锚定,只匹配出现在行尾的字符
  

  
字符删除:
  
    ${var/pattern} #删除第一次被pattern匹配的字符
  
    ${var//pattern} #删除整行所有被pattern匹配的字符
  
    ${var/#pattern} #删除行首被pattern匹配的字符
  
    ${var/%pattern} #删除行尾被pattern匹配的字符


页: [1]
查看完整版本: Shell 编程 <字符串处理>