bash Shell提供了多种字符串处理的命令:
格式:expr match $string $substring
作用:在string的开头匹配substring,返回匹配到的长度,在string开头匹配不到substring则返回0,substring可以是正则表达式
string=”welcome to our world”
命令 | 返回值 |
---|---|
expr match “$string” w.* | 20 |
expr match “$string” ou.* | 0 |
格式:expr index $string $sunstring
作用:在字符串string上匹配substring中字符第一次出现的字符
string=”welcome to our world”
命令 | 返回值 |
---|---|
expr index “$string” our | 5 |
expr index “$string” d | 20 |
expr index “$string” s | 0 |
运行发现,expr index的功能是寻找两个串之间的第一个公共字符
expr substr
格式:expr substr $string $position $length
与${}的区别:${}的position从0开始给string标号;expr sutstr的position从1开始给string标号
string=”welcome to our world”
命令 | 返回值 |
---|---|
echo ${string:1:8} | elcome t |
expr substr “$string” 2 8 | elcome t |
正则表达式截取子串
使用正则表达式只能抽取string开头处或结尾处的子串。
- expr match $string ‘\($substring\)’
- expr $string : ‘\($substring\)’
命令 | 返回值 |
---|---|
expr match “$another” “[0-9]*” | 8 |
expr match “$another” “\([0-9]*\)” | 20091114 |
expr “$another” : “\([0-9]*\)” | 20091114 |
注意:冒号两侧有空格
substring并非正则表达式
20091114 Reading Hadoop
命令 | 结果 |
---|---|
echo “${another#2*1}” | 114 Reading Hadoop |
echo “${another##2*1}” | 4 Reading Hadoop |
echo “${another%a*p}” | 20091114 Reading H |
echo “${another%%a*p}” | 20091114 Re |
string=”20001020year20050509month”
命令 | 结果 |
---|---|
echo ${string/200/201} | 20101020year20050509month |
echo ${string/200/201} | 20101020year20150509month |
echo ${string/r*h/} | 20001020yea |
echo ${string/#2000/2010} | 20101020year20050509month |
echo ${string/%month/MONTH} | 20001020year20050509MONTH |
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/havedream_one/article/details/47098819