当前位置: 首页 > Linux, shell > 正文

你不知道的bash (字符串操作)

题记

  使用Linux有四年多了
  曾经有段时间,也静下心来将bash好好的研究了一把,心满意足的感觉自己“会”了
  随着时间的推移,常用的命令就那么几个,渐渐的,知识面逐渐收缩
  再次看到bash资料时,才发现:“原来可以不用这么绕,原来可以这么直接”
  学习就是一个温故知新的过程,技术就是一个在使用过程中逐渐积累的过程
  这篇文档题目为《你不知道的bash》,其实,更确切的讲,应该是《我不知道的bash》
  在”写下来“的过程中,不仅仅梳理了忘记的东西,还顺带的整理了一些bash中的经典用法
  希望以后不要再忘了

${#string}

获取字符串长度

  klwang@klwang-A480B:~$ string=abcd1234
  klwang@klwang-A480B:~$ echo $string
  abcd1234
  klwang@klwang-A480B:~$ echo ${#string}
  8

${string:position}

从指定位置开始截取子字符串

  klwang@klwang-A480B:~$ stringZ=abcABC123ABCabc
  klwang@klwang-A480B:~$ echo ${stringZ:0}
  abcABC123ABCabc
  klwang@klwang-A480B:~$ echo ${stringZ:3}
  ABC123ABCabc

${string:position:length}

从指定位置开始截取指定长度的子字符串


  klwang@klwang-A480B:~$ stringZ=abcABC123ABCabc
  klwang@klwang-A480B:~$ echo ${stringZ:3:1}
  A
  klwang@klwang-A480B:~$ echo ${stringZ: -3}
  abc
  klwang@klwang-A480B:~$ echo ${stringZ: -8:1}
  2

注意:使用负位置时,需要添加空格,负责会和bash的默认字符串值功能冲突

${string#substring}

从前向后删除最短匹配的子字符串


  klwang@klwang-A480B:~$ stringZ=abcABC123ABCabc
  klwang@klwang-A480B:~$ echo ${stringZ#a*C} 
  123ABCabc

${string##substring}

从前向后删除最长匹配的子字符串


  klwang@klwang-A480B:~$ stringZ=abcABC123ABCabc
  klwang@klwang-A480B:~$ echo ${stringZ##a*C} 
  abc

${string%substring}

从后向前删除最短匹配的子字符串

  klwang@klwang-A480B:~$ stringZ=abcABC123ABCabc
  klwang@klwang-A480B:~$ echo ${stringZ%A*c}
  abcABC123

${string%%substring}

从后向前删除最长匹配的子字符串

  klwang@klwang-A480B:~$ stringZ=abcABC123ABCabc
  klwang@klwang-A480B:~$ echo ${stringZ%%A*c}
  abc

${string/substring/replacement}

将字符串中出现的第一个substring替换成replacement

  klwang@klwang-A480B:~$ stringZ=abcABC123ABCabc
  klwang@klwang-A480B:~$ echo ${stringZ/abc/xyz} 
  xyzABC123ABCabc

${string//substring/replacement}

将字符串中出现的所有substring替换成replacement

  klwang@klwang-A480B:~$ stringZ=abcABC123ABCabc
  klwang@klwang-A480B:~$ echo ${stringZ//abc/xyz} 
  xyzABC123ABCxyz

${string/#substring/replacement}

只有当substring出现在字符串的起始位置时,才进行替换

  klwang@klwang-A480B:~$ stringZ=abcABC123ABCabc
  klwang@klwang-A480B:~$ echo ${stringZ/#123/XYZ}
  abcABC123ABCabc
  klwang@klwang-A480B:~$ echo ${stringZ/#abc/XYZ}
  XYZABC123ABCabc

${string/%substring/replacement}

只有当substring出现在字符串的结束位置时,才进行替换

  klwang@klwang-A480B:~$ stringZ=abcABC123ABCabc
  klwang@klwang-A480B:~$ echo ${stringZ/%ABC/XYZ}
  abcABC123ABCabc
  klwang@klwang-A480B:~$ echo ${stringZ/%abc/XYZ}
  abcABC123ABCXYZ

that’s all, 关于更加细致的字符串处理,可以使用awk

    分享到:

本文固定链接: http://klwang.info/bash-you-don-not-konw-strings-manipulating/ | 数据库|Linux|软件开发

该日志由 klwang 于2013年07月01日发表在 Linux, shell 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 你不知道的bash (字符串操作) | 数据库|Linux|软件开发
关键字: , ,

你不知道的bash (字符串操作):等您坐沙发呢!

发表评论

*
快捷键:Ctrl+Enter