每一种语言都有他独自的字符串操作方法,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. uboot在s3c2440上的移植(1)

    一.移植环境 主  机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand,Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2.tgz u-b ...

  2. 18个有用的 .htaccess 文件使用技巧

    .htaccess 是 Web 服务器 Apache 中特有的一个配置文件,操控着服务器上的许多行为,我们可以利用它来做许多事情,例如:设置访问权限,网址重定向,等等.本文向大家展示18条 .htac ...

  3. ionic 项目的启动屏幕

    首先要做好图片,图片的大小最好是192px*192px(icon.png).2208px*2208px(splash.png); 然后在APP项目中建立一个新文件夹,resources,将准备好的两张 ...

  4. VC++ UTF-8与GBK格式转换

    // 注释:多字节包括GBK和UTF-8 int GBK2UTF8(char *szGbk,char *szUtf8,int Len) { // 先将多字节GBK(CP_ACP或ANSI)转换成宽字符 ...

  5. 转载事务在C#方法里的应用

    问题:一个系统的数据库更新或者插入的时候若遭遇到断电等能引起数据库不能正常工作的情况的话,其更新或插入的将是不完整的数据,或者是错误的数据.故需要引入事务处理. 实例:数据更新的事务处理. 解决方案: ...

  6. 如何为不定高度(height:auto)的元素添加CSS3 transition-property:height 动画

    但一个元素不设置height时,它的默认值是 auto,浏览器会计算出实际的高度. 但如果想给一个 height:auto 的块级元素的高度添加 CSS3 动画时,该怎么办呢? 从 MDN 的可以查到 ...

  7. Ext js中CheckBoxGroup的动态绑定

    <script type="text/jscript"> var WinXianCode; function SearchGetXianLuF(Type) { if(! ...

  8. 在sql-server上建立mysql链接库

    EXEC sp_addlinkedserver @server = N'RESUME_MYSQL_CONN', @srvproduct=N'MySQL ODBC 5.1 Driver', @provi ...

  9. jQuery简介<思维导图>

    jQuery是继prototype之后有一个优秀的Javascript库,它由John Resig创建于2006年1月.它简化了遍历HTML文档.操作DOM.处理事件.执行动画和Ajax的操作.它独特 ...

  10. C# 类构造函数赋值里属性与字段赋值注意项

    public class Test { public Test(int age) { this.Age=age;//如果这里使用的是this.age=age;那么属性里的判断将不会执行 } priva ...