zoukankan      html  css  js  c++  java
  • [转] shell文本字符串处理

    第一种方法:#%*,#即截取变量前的字符(左向右截取),%表示截取后面字符(右向左截取),*匹配符
    var=foodforthought.jpg
    ${varible##*string} 从左向右截取最后一个string后的字符串
    运行:echo ${var##*fo}
    结果:rthought.jpg
     
    ${varible#*string}从左向右截取第一个string后的字符串
    运行:echo ${var#*fo} 
    结果:odforthought.jpg
     
    ${varible%%string*}从右向左截取最后一个string后的字符串
    运行:echo ${var%%fo*}
    结果:
     
    ${varible%string*}从右向左截取第一个string后的字符串
    运行:echo ${var%fo*} 
    结果:food
     
    "*"只是一个通配符可以不要
     
    第二种方法:${varible:n1:n2}:截取变量varible从n1到n2之间的字符串。
    var=cowabunga
    运行:echo ${var:0:3}
    结果:cow
     
    运行:echo ${var:3:7}
    结果:abunga
    mytar.sh -- 一个简单的脚本
     
    应用:[ "${1##*.}" = "tar" ]&&echo "your input is tar file"||echo "your input is not tar file"
     
    第三种方法:awk -F 分割符号
    var=account.jpg
    运行:echo $var|awk -F"." '{print $2}'
    结果:jpg
    运行:echo $var|awk '{print substr($0,1,7)}'
    结果:account
     
    第四种方法:利用cut
    echo $a|cut -b2-8
    cut:对标准输入的字符串进行处理
    cut -bn-m:以byte为单位,从第n个byte开始,取m个
    cut -bn,m:以byte为单位,截取第n,m个byte
    cut -b-n,m:以byte为单位,截取1-n,和第m个
    -c:以charactor为单位
    -d:指定分隔符,默认为tab
    -s:使标准输入中没有delimeter
    cut -f1:截取第1个域
    var="-rw-r--r-- 1 root root          1 Aug 23 01:00 file"
    运行:echo $var|cut -d" " -f2-4 
    结果:1 root root
     
     
    # 删除扩展名
    运行:echo "account.doc"|sed 's/..*//g'
    结果:account
    # 删除文件名
    运行:echo "account.doc"|sed 's/.*.//g'
    结果:.doc
    运行:ed -s file <
    /somedomain/s/somedomain/newdomain/g
    w
    q
    EOF
    结果:file文件中的somedomain将被newdomain全局替换
  • 相关阅读:
    对于字符串的重复字符的去除
    487-3279
    队列设计(转)
    动态创建JS
    前端技巧:禁止浏览器static files缓存篇(转)
    cas与NGINX整合(转)
    秒杀场景下MySQL的低效(转)
    html禁用缓存
    MD5随机盐值生成法
    SVN There are unfinished transactions detected
  • 原文地址:https://www.cnblogs.com/qiangxia/p/4633867.html
Copyright © 2011-2022 走看看