shell下字符串的相关操作
2012-01-29 12:49
246 查看
计算字符串长度:
匹配字符串开头的长度:
索引:
提取子串:
第二种提取子串的方法:
从字符串开头位置提取子串:
从字符串结尾位置开始提取子串:
从字符串开头位置截取子串(把匹配的子串删除):
从字符串尾部截取子串:
替换字符串中的子串:
[shentao@vps ~]$ string=abcABC123ABCabc [shentao@vps ~]$ echo ${#string} 15 [shentao@vps ~]$ echo `expr length $string` 15 [shentao@vps ~]$ echo `expr "$string" : '.*'` 15感觉最后一种是很奇怪的写法。
匹配字符串开头的长度:
[shentao@vps ~]$ echo `expr match "$string" 'abc'` 3 [shentao@vps ~]$ echo `expr match "$string" 'bc'` #字符串不以bc开头 0 [shentao@vps ~]$ echo `expr match "$string" 'abc[A-Z]*.2'` 8 [shentao@vps ~]$ echo `expr match "$string" 'abc[A-Z]*2'` 0
索引:
$ echo `expr index "$string" C` 6 $ echo `expr index "$string" '5'` 0 $ echo `expr index "$string" '51'` 7 $ echo `expr index "$string" '5a1'` 1后两个语句的结果值得注意。
提取子串:
$ echo ${string:0} abcABC123ABCabc $ echo ${string:5} C123ABCabc $ echo ${string:5:2} C1 $ echo ${string:-5} # 这样写不能按期望输出 abcABC123ABCabc $ echo ${string: -5} #要在负数前加个空格 BCabc $ echo ${string: (-5)} #或者把负数括起来 BCabc $ echo ${string: -5:2} BC $ echo ${string: (-5):2} BC
第二种提取子串的方法:
$ echo `expr substr $string 4 3` ABC
从字符串开头位置提取子串:
$ echo `expr match "$string" '\(.[b-c]*[A-Z]..[0-9]\)'` abcABC1 $ echo `expr "$string" : '\(.[b-c]*[A-Z]..[0-9]\)'` abcABC1 $ echo `expr "$string" : '\([b-c]*[A-Z]..[0-9]\)'` #$string不以[b-c]*开头,所以不匹配
从字符串结尾位置开始提取子串:
$ echo `expr match "$string" '.*\([A-C][A-C][A-C][a-c]*\)'` ABCabc $ echo `expr "$string" : '.*\(......\)'` ABCabc $ echo `expr match "$string" '.*\([A-C][A-C][A-C][a-c]\)'` # 从尾部开始提取,但并不是一定要提取最尾部的字符,下面两个例子说明这个 ABCa $ echo `expr match "$string" '.*\([A-C][A-C][A-C]\)'` ABC $ echo `expr match "$string" '.*\([1-3][A-C][A-C][A-C]\)'` 3ABC
从字符串开头位置截取子串(把匹配的子串删除):
$ echo ${string#a*C} #最短匹配 123ABCabc $ echo ${string#b*C} # 字符串不是以b开头,所以不匹配 abcABC123ABCabc $ echo ${string##a*C} #最长匹配 abc $ echo ${string#b*C} # 字符串不是以b开头,所以不匹配 abcABC123ABCabc
从字符串尾部截取子串:
$ echo ${string%b*c} abcABC123ABCa $ echo ${string%%b*c} a $ echo ${string%b*C} #字符串不以C结尾,所以不匹配 abcABC123ABCabc $ echo ${string%%b*C} #同上 abcABC123ABCabc
替换字符串中的子串:
$ echo ${string/abc/mmm} # 替换第一个找到的字符串 mmmABC123ABCabc $ echo ${string//abc/mmm} # 替换所有找到的字符串 mmmABC123ABCmmm $ echo ${string//ac/mmm} #没有ac,所以不替换 abcABC123ABCabc指定替换开头或者结尾处的子串:
$ echo ${string/#abc/mmm} #如果匹配字符串开头处的子串,就替换 mmmABC123ABCabc $ echo ${string/%abc/mmm} #如果匹配字符串结尾处的子串,就替换 abcABC123ABCmmm $ echo ${string/#bc/mmm} #字符串不以bc开头,所以不替换 abcABC123ABCabc $ echo ${string/%ab/mmm} #字符串不以ab结尾,所以不替换 abcABC123ABCabc
相关文章推荐
- shell脚本字符串相关操作
- shell脚本字符串相关操作
- Bash Shell字符串操作小结
- 有关UNICODE、ANSI字符集和相关字符串操作
- Mac OS操作相关(2):shell命令篇
- 有关UNICODE、ANSI字符集和相关字符串操作的总结[转]
- 字符串以及内存操作相关函数
- C#学习笔记三字符串相关操作
- shell下数字和字符串比较操作命令
- 字符串相关操作
- 字符串以及内存操作相关函数
- 有关UNICODE、ANSI字符集和相关字符串操作的总结!
- Delphi学习笔记——文件路径相关的字符串操作(综合)
- shell 字符串操作
- 有关UNICODE、ANSI字符集和相关字符串操作的总结
- shell 如何实现i++操作以及字符串截取操作
- shell中字符串的简单操作
- 相关mysql的sql语句,可以在shell中操作mysql的方法
- java字符串API相关操作
- JS中字符串的相关操作