转自:http://blog.chinaunix.net/uid-29091195-id-3974751.html

我们所遇到的编程语言中(汇编除外)都少不了字符串处理函数吧,
当然shell编程也不例外咯,那么下面我们一起来看下shell中字符串
处理的相关操作吧。大概下面的字符串操作可以分为两种类型,一种
属于变量替换,另一种属于继承unix expr命令吧!

  1. 、测试字符串长度
  2.  
  3. ${#string}
  4. expr length $string
  5. expr "$string" : '.*'
  6. 例:
  7. #!/bin/bash
  8. str="asfd"
  9. echo "${#str}"
  10. a=expr length $str
  11. echo "a=$a"
  12. a=
  13. a=`expr "$str" : '.*'`
  14. echo "a=$a"
  15.  
  16. 、匹配字符串开头的子串长度
  17. expr match "$string" '$substring'
  18. $substring是一个正则表达式.
  19. expr "$string" : '$substring'
  20. $substring是一个正则表达式.
  21. 例:
  22. #!/bin/bash
  23. str=abcABC123ABCabc
  24. echo `expr match "$str" 'abc[A-Z]*.2'` #
  25. echo `expr "$str" : 'abc[A-Z]*.2'` #
  26.  
  27. 、索引
  28. expr index $string $substring
  29. 在字符串$string中所匹配到的$substring第一次所出现的位置.
  30. 例:
  31. #!/bin/bash
  32. str=abcABC123ABCabc
  33. echo `expr index "$str" C` # C 字符的位置.
  34. echo `expr index "$str" c` #
  35.  
  36. 、提取子串
  37. ${string:position}
  38. $string中从位置$position开始提取子串。
  39. 如果$string"*"或者"@", 那么将会提取从位置$position开始的位置参数. []
  40. ${string:position:length}
  41. $string中从位置$position开始提取$length长度的子串.
  42. 例:
  43. #!/bin/bash
  44. str="abcABC123ABCabc"
  45.  
  46. echo ${str:} #输出abcABC123ABCabc
  47. echo ${str:} #输出ABC123ABCabc
  48. echo ${str::} #输出123
  49.  
  50. 、子串削除
  51. ${string#substring}
  52. $string的开头位置截掉最短匹配的$substring.
  53. ${string##substring}
  54. $string的开头位置截掉最长匹配的$substring.
  55. 例:
  56. #!/bin/bash
  57. str="abcABC123ABCabc"
  58.  
  59. echo ${str#a*C} #输出123ABCabc
  60. echo ${str##a*C} #输出abc
  61. echo ${str##a*} #输出23ABCabc
  62.  
  63. ${string%substring}
  64. $string的结尾位置截掉最短匹配的$substring.
  65. ${string%%substring}
  66. $string的结尾位置截掉最长匹配的$substring.
  67. 例:
  68. #!/bin/bash
  69. str=abcABC123ABCabc
  70.  
  71. echo ${str%b*c} #输出 abcABC123ABCa
  72. echo ${str%%b*c} #输出 a
  73.  
  74. 、子串替换
  75. ${string/substring/replacement}
  76. 使用$replacement来替换第一个匹配的$substring.
  77. ${string//substring/replacement}
  78. 使用$replacement来替换所有匹配的$substring.
  79. ${string/%substring/replacement}
  80. 如果$substring匹配$string的结尾部分, 那么就用$replacement来替换$substring.
  81. ${string/#substring/replacement}
  82. 如果$substring匹配$string的开头部分, 那么就用$replacement来替换$substring.
  83. 例:
  84. #!/bin/bash
  85. str="abcABC123ABCabc"
  86.  
  87. echo ${str/ABC/&&&} #输出 abc&&&123ABCabc
  88. echo ${str//ABC/&&&&} #输出 abc&&&&123&&&&abc
  89. echo ${str/%abc/&&&} #输出 abcABC123ABC&&&
  90. echo ${str/#abc/&&&} #输出 &&&ABC123ABCabc

shell中字符串操作【转】的更多相关文章

  1. Shell中字符串、数值的比较

    原文:http://apps.hi.baidu.com/share/detail/31263915 在shell中字符串与数值的比较方法是不同的,要注意区分 整数比较:    -eq       等于 ...

  2. shell脚本—— 字符串操作(长度,查找,替换)

    表达式 含义 ${var} 变量var的值, 与$var相同 ${var-DEFAULT} 如果var没有被声明, 那么就以$DEFAULT作为其值 * ${var:-DEFAULT} 如果var没有 ...

  3. Python中字符串操作

    #Python字符串操作 '''1.复制字符串''' #strcpy(sStr1,sStr2) sStr1 = 'strcpy' sStr2 = sStr1 sStr1 = 'strcpy2' pri ...

  4. linux shell中读写操作mysql数据库

    本文介绍了如何在shell中读写mysql数据库.主要介绍了如何在shell 中连接mysql数据库,如何在shell中创建数据库,创建表,插入csv文件,读取mysql数据库,导出mysql数据库为 ...

  5. Python中字符串操作函数string.split('str1')和string.join(ls)

    Python中的字符串操作函数split 和 join能够实现字符串和列表之间的简单转换, 使用 .split()可以将字符串中特定部分以多个字符的形式,存储成列表 def split(self, * ...

  6. python中字符串操作--截取,查找,替换

    python中,对字符串的操作是最常见的,python对字符串操作有自己特殊的处理方式. 字符串的截取 python中对于字符串的索引是比较特别的,来感受一下: s = '123456789' #截取 ...

  7. 在shell 中字符串,文件,数字的比较

    hadoop fs -test -e /path/exist ] ;then echo 'exist' else echo 'Error! path is not exist' fi 在shell中如 ...

  8. Shell中字符串的切割、拼接、比较、替换

    [截取] 一.Linux shell 截取字符变量的前8位,有方法如下: expr substr “$a” 1 8 : 二.按指定的字符串截取 第一种方法: ${varible##*string} # ...

  9. R中字符串操作

    简介 Stringr中包含3个主要的函数族 字符操作 空格处理 模式匹配 常用函数 在平常的数据分析工作中,经常要用到如下的函数 函数 操作 str_length() 获取字符串长度 str_sub( ...

随机推荐

  1. liunx服务器在本地可以访问但是外网访问不了

    版权声明:本文为CSDN博主「tlytg456」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/tlytg/ar ...

  2. datatable 用法

    DataTable datainsert = dt.GetChanges(DataRowState.Added); DataTable datadelete = dt.GetChanges(DataR ...

  3. SAS数据挖掘实战篇【五】

    SAS数据挖掘实战篇[五] SAS--预测模型 6.1 测模型介绍 预测型(Prediction)是指由历史的和当前的数据产生的并能推测未来数据趋势的知识.这类知识可以被认为是以时 间为关键属性的关联 ...

  4. delphi中and和or的特殊用法

    1=1 10=2 100=4 1000=8 1 or 2 = 3(11); 1 and 3 = 1; 2 and 3 = 2; 2 or 4 = 6(110); 2 and 6 = 2; 4 and ...

  5. windows修复失效图标

    taskkill /im explorer.exe /fcd /d %userprofile%\appdata\localdel iconcache.db /astart explorer.exeex ...

  6. H3C 模拟器 防火墙开启Web功能

    最近在搞运维的一些事情,由于缺少实体的机器来进行操作,先在模拟器里面进行 环境 windows 10,模拟器 HCL_V2.1.1 防火墙 1 在windows添加虚拟网卡 我的电脑--管理--设备管 ...

  7. [LeetCode] Top 100 Liked Questions

    [LeetCode] Top 100 Liked Questions # Title Acceptance Difficulty 1 Two Sum 38.80% Easy 2 Add Two Num ...

  8. k8s 删除ns 卡住的解决办法

    在某些情况下,在k8s中会无法删除某个namespace,它会一直卡在terminating状态下.解决这个问题的步骤为: kubectl api-resources --verbs=list --n ...

  9. XCTF (app1)

    打开app.一个文本框,随便输入提示如下图. 打开JEB反编译. v2调用getPackageInfo获取版本信息.一般 Android 通过 PackageInfo 这个类来获取应用安装包信息,比如 ...

  10. caoz的梦呓:创业公司如何做好信息安全

    猫宁!!! 参考链接:https://mp.weixin.qq.com/s/gCWjzHBRfbPFhNeg2VtFhA https://mp.weixin.qq.com/s/bmifCmD2CHV1 ...