每一种语言都有他独自的字符串操作方法,shell也一样,下面以以例子的方式,简单介绍常用方法。

1,取得字符串长度

  1. string=abc12342341          //等号二边不要有空格
    echo ${#string} //结果11
    expr length $string //结果11
    expr "$string" : ".*" //结果11 分号二边要有空格,这里的:根match的用法差不多

2,字符串所在位置

  1. expr index $string ''    //结果4 字符串对应的下标是从0开始的  

这个方法让我想起来了js的indexOf,各种语言对字符串的操作方法大方向都差不多,如果有语言基础的话,学习shell会很快的。

3,从字符串开头到子串的最大长度

  1. expr match $string 'abc.*3' //结果9  

个人觉得这个函数的用处不大,为什么要从开头开始呢。

4,字符串截取

  1. echo ${string:}      //2342341  从第4位开始截取后面所有字符串
    echo ${string::} //123 从第3位开始截取后面3位
    echo ${string::} //123423 从第3位开始截取后面6位
    echo ${string: -} //2341 :右边有空格 截取后4位
    echo ${string:(-)} //2341 同上
    expr substr $string //123 从第3位开始截取后面3位

上面的方法让我想起了,php的substr函数,后面截取的规则是一样的。

5,匹配显示内容

  1. //例3中也有match和这里的match不同,上面显示的是匹配字符的长度,而下面的是匹配的内容
    expr match $string '\([a-c]*[0-9]*\)' //abc12342341
    expr $string : '\([a-c]*[0-9]\)' //abc1
    expr $string : '.*\([0-9][0-9][0-9]\)' //341 显示括号中匹配的内容

这里括号的用法,是不是根其他的括号用法有相似之处呢,

6,截取不匹配的内容

  1. echo ${string#a*}     //42341  从$string左边开始,去掉最短匹配子串
    echo ${string#c*} //abc12342341 这样什么也没有匹配到
    echo ${string#*c1*} //42341 从$string左边开始,去掉最短匹配子串
    echo ${string##a*} //41 从$string左边开始,去掉最长匹配子串
    echo ${string%*} //abc12342 从$string右边开始,去掉最短匹配子串
    echo ${string%%*} //abc12 从$string右边开始,去掉最长匹配子串

这里要注意,必须从字符串的第一个字符开始,或者从最后一个开始,

7,匹配并且替换

  1. echo ${string//bb}   //abc1bb42341  替换一次
    echo ${string//23/bb} //abc1bb4bb41 双斜杠替换所有匹配
    echo ${string/#abc/bb} //bb12342341 #以什么开头来匹配,根php中的^有点像
    echo ${string/%/bb} //abc123423bb %以什么结尾来匹配,根php中的$有点像

转自: http://blog.51yip.com/shell/1080.html

[转] shell字符串操作方法,以及实例的更多相关文章

  1. PowerShell与Unix Shell对比:八大实例

    PowerShell与Unix Shell对比:八大实例 本文将从八个实例对比PowerShell和Unix Shell,通常是Linux Bourne Shell(包括sh.ksh和bash等).二 ...

  2. Python 字符串操作方法大全

    Python 字符串操作方法大全 1.去空格及特殊符号复制代码代码如下:s.strip().lstrip().rstrip(',') 2.复制字符串复制代码代码如下:#strcpy(sStr1,sSt ...

  3. MATLAB的PLOT函数线型设置及横坐标为字符串的代码实例

    2.横坐标为字符串的代码实例 cell={‘PLS’,’SVM’,’RF’,’NNET’,’NB’,’PLR’,’C5.0′,’PDA’,’KNN’,’GLM’,’BCT’};%分类方法yData=[ ...

  4. linux shell 字符串操作(长度,查找,替换)详解

    linux shell 字符串操作(长度,查找,替换)详解 在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作. 其实shell内置一系 ...

  5. Shell 字符串比较

    转自网络 Shell字符串比较 收藏 Shell 中整数比较方法及字符串的比较方法,如等于,不等于,大于,大于等于,小于,等等. 二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别. --- ...

  6. shell字符串操作详解

    shell字符串操作详解的相关资料. 1.shell变量声明的判断  表达式 含义 ${var} 变量var的值, 与$var相同 ${var-DEFAULT} 如果var没有被声明, 那么就以$DE ...

  7. 【转】shell字符串截取

    shell字符串的截取的问题: 一.Linux shell 截取字符变量的前8位,有方法如下: 1.expr substr “$a” 1 8 2.echo $a|awk ‘{print substr( ...

  8. shell字符串的用法

    shell字符串的用法 注意:shell4.2和shell4.1会有差别,较低版本的shell可能不支持某些功能 获取字符串长度:${#string} 获取子串: 注:(左边的第一个字符是用 0 表示 ...

  9. Linux脚本shell字符串处理

    Linux脚本shell字符串处理,基本都有了,看着搜吧 TLDP教堂 shell中if条件字符串.数字比对,[[ ]]和[ ]区别 Linux 之 shell 比较运算符 Linux Shell编程 ...

随机推荐

  1. 用javascript获取屏幕高度和宽度等信息

    网页可见区域宽: document.body.clientWidth网页可见区域高: document.body.clientHeight网页可见区域宽: document.body.offsetWi ...

  2. Java中Integer的最大值和最小值

    从JDK1.0开始,Integer中就定义了MIN_VALUE和MAX-VALUE两个常量: /** * A constant holding the minimum value an {@code ...

  3. 05. 取SQL分组中的某几行数据

    对表中数据分组,有时只需要某列的聚合值:有时却需要返回整行数据,常用的方法有:子查询.ROW_NUMBER.APPLY,总体感觉还是ROW_NUMBER比较直观.测试数据: if OBJECT_ID( ...

  4. linux-``反引号

    反引号`` 这个东西的用法,我百度了一下,和$()是一样的.在执行一条命令时,会先将其中的 ``,或者是$() 中的语句当作命令执行一遍,再将结果加入到原命令中重新执行,例如:echo `ls`会先执 ...

  5. java基础-在dos控制台编写简易的java程序

    第一步:在文件夹中修改隐藏的文件扩展名,让其文件的扩展名全部显示: 第二步:在文件夹中新建一个text文件,将其扩展名属性改为Hello.java的文件扩展名: 第三步:点击右键打开方式用txt文本打 ...

  6. Wordpress 运行缓慢的解决方法

    原因为wordpress 3.8之后采用google字体所致.   修改 functions.php    //禁用Open Sans class Disable_Google_Fonts { pub ...

  7. 【转载】Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)

    http://blog.csdn.net/congcong68/article/details/41113239 互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及 ...

  8. Asp.Net复习篇之Asp.Net生命周期与Asp.Net页的生命周期

    Asp.Net生命周期与Asp.Net页的生命周期是一个比较重要的话题,有时可能似乎知道一些,但又说不出个所以然,而且时常把这两个概念混淆.现在也是该好好理清思路,把这两个概念搞懂. Asp.Net生 ...

  9. C#垃圾回收机制

    C#属于托管的面相对象的语言,内存回收机制就是一个代表, C#有一套类似"全自动"的垃圾回收机制,也就是虚拟机会自动来判断执行内存的回收, 我们一般常用的Dispose(),Usi ...

  10. Ajax中get提交和post提交的区别

    $.post("HandlerLiuYan.ashx", { leixing: leixing, danwei: danwei, liuyan: liuyan, name: nam ...