每一种语言都有他独自的字符串操作方法,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. [C.Sharp] Color 颜色转换

    URL:http://www.cnblogs.com/taven/archive/2009/09/26/1574329.html 方法1: 引用命名空间:using System.Drawing; 1 ...

  2. python用装饰器实现缓存函数执行结果

    根据调用的函数名和调用的参数,对函数的结果进行缓存,下次执行的时候就不用重复计算   可以用装饰器来实现   import time import hashlib import pickle cach ...

  3. codeforces 678C C. Joty and Chocolate(水题)

    题目链接: C. Joty and Chocolate time limit per test 1 second memory limit per test 256 megabytes input s ...

  4. hdu-5701 中位数计数(中位数)

    题目链接: 中位数计数 Problem Description   中位数定义为所有值从小到大排序后排在正中间的那个数,如果值有偶数个,通常取最中间的两个数值的平均数作为中位数. 现在有nn个数,每个 ...

  5. JS/jQuery宽高的理解和应用

    1.widows:窗口.window对象可省略 2.document对象是window对象的一部分 浏览器的Html文档成为Document对象 window.location===document. ...

  6. WEB系统架构

    客户端方向:框架+控件+模板+元数据辅助:懒加载+合并请求+异步任务+推送+缓存技术:reactjs,requirejs,jquery,angularjs,bootstrap,ant.design,f ...

  7. ASP.NET缓存全解析7:第三方分布式缓存解决方案 Memcached和Cacheman 转自网络原文作者李天平

    Memcached — 分布式缓存系统 1.Memcached是什么? Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度.Memcached通过在内 ...

  8. Python Opearte SQLAlchemy Do Something

    近段时间在看SQLAlchemy,总之万事开头难,但是么办法. Database Urls The create_engine() function produces an Engine object ...

  9. git 基本使用

    简单几步操作让你在终端下用git实现文件的上传. 一.克隆项目    在工作中,常见的情景都是远程库已经建好了,需要大家把代码拉下来,共同协作开发.本文所有操作均在终端下进行.    //克隆一个本地 ...

  10. js选中下拉框的默认选项

    //这是修改时选中 $("#type").find("option[value='"+factory+"']").attr("se ...