• bash 截取字符串


    转载自http://blog.chinaunix.net/uid-1757778-id-3162034.html

    命令的2种替换形式 $()和 ``
    示例:截断字符串    
    a):
        #截取文件名称
        var1=$(basename /home/aimybbe/bash/test.sh)
        echo $var1
        
        #截取目录
        var2=$(dirname /home/aimybbe/bash/test.sh)
        echo $var2
    b):
        var1=`basename /home/aimybbe/bash/test.sh`
        echo $var1
        
        var2=$(dirname /home/aimybbe/bash/test.sh)
        echo $var2
        
    更专业的字符串截取方法:

    示例:testfile.tar.gz

    a)获取后缀名
    你想截取 tar.gz
        filename=testfile.tar.gz
        file=${filename#*.}
        echo $file
    你想截取 gz
        filename=testfile.tar.gz
        file=${filename##*.}
        echo $file
    说明:
    这里的${filename##*.}什么意思呢?在 ${ } 中输入环境变量名称,两个##(或一个#),然后是通配符 ("*.")。
    然后,bash 取得 filename,找到从字符串 "testfile.tar.gz"开始处开始、且匹配通配符 "*."的最长子字符串(或最短),然后将其从字符串的开始处截去。
    注意:
    1.#意思是从字符串的开始处开始截取。
    2.两个##代表匹配的最大长度,一个#代表匹配的最小长度(也就是说这里不是一个#匹配一个‘.’)

    b)获取文件名称(也就是去除后缀名)
    你想截取testfile.tar
        filename=testfile.tar.gz
        file=${filename%.*}
        echo $file
    你想截取testfile
        filename=testfile.tar.gz
        file=${filename%%.*}
        echo $file    
    注意:
    1.这个方法和上面原理相同%就是从末尾字符串开始截取,%%就是最大长度,%就是最小长度

    c)截取任意的字符
    你想截取file
        filename=testfile.tar.gz
        file=${filename:4:4}
        echo $file
        
    你想截取test
        filename=testfile.tar.gz
        file=${filename:0:4}
        echo $file
    说明:
    格式为${filename::}第一个':'后面的数字是字符串的索引从左边开始,索引从0开始,第二个':'后面的数字是长度,两处的数字都是十进制数值。

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    [android] add system services
    java layer调用native层的android_media_AudioTrack_get_min_buff_size()确定audio track buffer的min size
    [转]linux 系统 errno.h错误码
    java static final泛型类对象
    Linux--信号阻塞与屏蔽
    02-CSS基础与进阶-day2_2018-08-27-20-34-56
    02-CSS基础与进阶-day2_2018-08-27-20-15-54
    69期-Java SE-001_Java概述-001-002
    02-CSS基础与进阶-day1-录像296
    02-CSS基础与进阶-day1-录像295
  • 原文地址:https://www.cnblogs.com/wq242424/p/4747557.html
Copyright © 2020-2023  润新知