转载自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开始,第二个':'后面的数字是长度,两处的数字都是十进制数值。

bash 截取字符串的更多相关文章

  1. shell截取字符串方法

    shell中截取字符串的方法有很多中, ${expression}一共有9种使用方法.${parameter:-word}${parameter:=word}${parameter:?word}${p ...

  2. ThinkPHP 模板substr的截取字符串函数

    ThinkPHP 模板substr的截取字符串函数在Common/function.php加上以下代码 /** ** 截取中文字符串 **/ function msubstr($str, $start ...

  3. shell编程常用的截取字符串操作

    1.          常用的字符串操作 1.1.           替换字符串:$ echo ${var/ /_}#支持正怎表达式 / /表示搜索到第一个替换,// /表示搜索到的结果全部替换. ...

  4. [No0000A4]DOS命令(cmd)批处理:替换字符串、截取字符串、扩充字符串、获取字符串长度

    1.替换字符串,即将某一字符串中的特定字符或字符串替换为给定的字符串.举例说明其功能:========================================= @echo off set a ...

  5. js中substr,substring,slice。截取字符串的区别

    substr(n1,n2) n1:起始位置(可以为负数) n2:截取长度(不可以为0,不可以为负数,可以为空) 当n1为正数时,从字符串的n1下标处截取字符串(起始位置),长度为n2. 当n1为负数时 ...

  6. Linux Shell 截取字符串

    Linux Shell 截取字符串 shell中截取字符串的方法很多 ${var#*/} ${var##*/} ${var%/*} ${var%%/*} ${var:start:len} ${var: ...

  7. SQL Server中截取字符串常用函数

    SQL Server 中截取字符串常用的函数: .LEFT ( character_expression , integer_expression ) 函数说明:LEFT ( '源字符串' , '要截 ...

  8. inux中shell截取字符串方法总结

    shell中截取字符串的方法有很多中, ${expression}一共有9种使用方法. ${parameter:-word} ${parameter:=word} ${parameter:?word} ...

  9. Excel怎样从一串字符中的某个指定“字符”前后截取字符及截取字符串常用函数

    怎么样可以从一串字符中的某个指定位置的前或后截取指定个数的字符. 如:12345.6789,我要截取小数点前(或后)的3个字符.怎么样操作, 另外,怎么样从右边截取字符,就是和left()函数相反的那 ...

随机推荐

  1. 僵尸传染bfs

    #include<stdio.h> int map[4][4]={0,0,0,1,       0,0,1,1,       0,0,1,0,       0,1,0,0}; int mx ...

  2. 发布(高程数据)服务,Service Editor界面无LERC格式选项

    [问题描述]: ArcGIS Server 发布(高程数据)服务,无 LERC格式选项,而官方帮助中发布流程提示需要选择LERC格式. [解决办法]: 需求:发布高程数据,ArcGIS Server版 ...

  3. Lazarus -Pascal常量

    2.常量 2.1.普通常量 仅仅下面类型可以被定义为常量Ordinal类型Set类型指针类型 (but the only allowed value is Nil). real类型 Char, Str ...

  4. java动态联编

    JAVA中联编有两种,一种是动态联编,一种是静态联编. 动态联编:也叫多态联编或者是迟后联编,因为到底要调用哪一个函数,在编译时不能确定,而要推迟到运行中确定.也就是说,要等到程序运行时,确定了指针所 ...

  5. PHP5 mysqli 教程

    mysqli提供了面向对象和面向过程两种方式来与数据库交互,分别看一下这两种方式. 1.面向对象 在面向对象的方式中,mysqli被封装成一个类,它的构造方法如下: __construct ([ st ...

  6. hibernate manytoone中的lazy EAGER

    Hibernate中的字段映射中的Fetch有两种方式:EAGER和LAZY Eager:全部抓取 Lazy:延迟抓取 如果在字段中声明为Eager,那么在取得当前Bean时,同时会抓取Bean中的关 ...

  7. Mongo命令行中执行CRUD

    在命令行中使用mongo自带的shell命令来执行CRUD操作 首先链接到数据库 增 db.qiao.insert({"qq":1}) db.qiao.save({"qq ...

  8. 获取枚举Description 属性

    /// <summary> /// 获取枚举变量值的 Description 属性 /// </summary> /// <param name="obj&qu ...

  9. Http请求工具

    package cn.com.test; import java.io.BufferedReader; import java.io.IOException; import java.io.Input ...

  10. 介绍UDF,以及完成大小写的转换

    一:概述 1.UDF 用户自定义函数,用java实现自定义的需求 2.UDF的类型 udf:一进一出 udaf:多进一出 udtf:一进多出 3.udf的实现步骤 继承UDF类 实现evaluate的 ...