字符串处理-${#},expr length,expr index,expr match,抽取子串
来源:互联网 发布:保卫萝卜3 炮塔数据 编辑:程序博客网 时间:2024/06/14 14:23
参考文章:http://8186010.blog.51cto.com/8176010/1531648
######${#} , expr length "$str"
[root@server100 shell]
# str="my name is MAH"
[root@server100 shell]
# echo ${#str}
14
[root@server100 shell]
# expr length $str
expr
: syntax error
[root@server100 shell]
# expr length "$str" #必须要加双引号
14
########expr index "$str" MAH
[root@server100 shell]
# str="my name is MAH"
[root@server100 shell]
# expr index "$str" MAH
12
[root@server100 shell]
# expr index "$str" o #没有出现,返回0
0
[root@server100 shell]
# expr index "$str" Ay #尽管Ay都存在,但是返回的是y的位置
2
[root@server100 shell]
# expr index "$str" an
4
1
2
3
4
5
6
7
8
9
[root@server100 shell]
# str="my name is MAH"
[root@server100 shell]
# expr match "$str" my*
2
[root@server100 shell]
# expr match "$str" MAH #尽管字符串中包含MAH,但是MAH不在开头
0
[root@server100 shell]
# expr match "$str" m*
1
[root@server100 shell]
# expr match "$str" m.* #正则表达式 .* 表示所有
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
####${str:position:length}
字符串剪裁,两种方式
[root@server100 shell]
# str="abc def ghi"
[root@server100 shell]
# echo ${str:0}
abc def ghi
[root@server100 shell]
# echo ${str:0:3} #0表示第一位,3表示长度
abc
[root@server100 shell]
# echo ${str:0:5}
abc d
[root@server100 shell]
# echo ${str:-3} #-前面没有空格,显示所有字符串
abc def ghi
You have new mail
in
/var/spool/mail/root
[root@server100 shell]
# echo $str
abc def ghi
[root@server100 shell]
# echo ${str: -3} #-前有空格,从右边剪裁
ghi
[root@server100 shell]
# echo ${str: -6}
ef ghi
[root@server100 shell]
# expr substr "$str" 1 3 #expr substr "$str"格式,首位是1号位,后面必须有两个参数
abc
[root@server100 shell]
# expr substr "$str" 1 5
abc d
1
2
3
4
5
[root@server100 shell]
# str="012345 my name is mah"
[root@server100 shell]
# expr match "$str" '\([0-9]*\)' #方式一,使用match
012345
[root@server100 shell]
# expr "$str" : '\([0-9]*\)' #方式二,使用冒号
012345
1
2
3
4
5
6
[root@server100 shell]
# echo $str
012345 my name is mah
[root@server100 shell]
# expr match "$str" '.*\(...\)' #.表示一个字符
mah
[root@server100 shell]
# expr "$str" : '.*\(...\)'
mah
1
2
3
4
5
6
7
8
9
10
[root@server100 shell]
# echo $str
012345 my name is mah
[root@server100 shell]
# echo ${str#0123}
45 my name is mah
[root@server100 shell]
# echo ${str#345}
012345 my name is mah
[root@server100 shell]
# echo ${str#0*5} #这里*不是正则表达式,仅仅代表从0到5中所有字符
my name is mah
[root@server100 shell]
# echo ${str##0*5} # ##贪婪模式
my name is mah
1
2
3
4
5
6
[root@server100 shell]
# echo ${str%mah}
012345 my name is
[root@server100 shell]
# echo ${str%%m*h}
012345
[root@server100 shell]
# echo ${str%%m.*h} #由此可见,*不是正则表示式
012345 my name is mah
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[root@server100 shell]
# str="0011 my name is mah 0011 "
[root@server100 shell]
# echo ${str/0*1/yyy}
yyy
[root@server100 shell]
# echo ${str/0**/yyy}
yyy
[root@server100 shell]
# echo ${str/0*0/yyy} #*号不是正则表达式,但是表示的是所有的字符
yyy11
[root@server100 shell]
# echo ${str//0*0/yyy}
yyy11
[root@server100 shell]
# echo ${str/0*m/yyy}
yyyah 0011
另外两种特殊的替换
#1.从开头替换
[root@server100 shell]
# echo ${str/#0011/MAH}
MAH my name is mah 0011
#2.从结尾替换
[root@server100 shell]
# echo ${str}
0011 my name is mah 0011
[root@server100 shell]
# echo ${str/%0011/MAH}
0011 my name is mah 0011
[root@server100 shell]
# str="123 my name is mah"
[root@server100 shell]
# echo ${str/%m*h/MAH}
123 MAH
0 0
- 字符串处理-${#},expr length,expr index,expr match,抽取子串
- expr
- expr
- expr
- expr
- 【shell】expr字符串匹配
- 【shell】expr 字符串截取功能
- 名称:eXPr
- expr 命令
- expr用法
- shell expr
- expr命令
- expr 命令
- expr命令
- expr命令
- expr命令
- linux expr
- linux expr
- 源码安装php5.6时的配置:
- 自己 用到的 spring注解
- mysql、tomcat、java安装配置
- BZOJ1934Vote 善意的投票
- super关键字
- 字符串处理-${#},expr length,expr index,expr match,抽取子串
- Matlab install on ubuntu
- Libgdx 骨骼动画整理
- ios发布app遇到的问题
- sencha touch编译报错:“bfailed to create task or type x-compass-compile Cause: The name is undefined”
- Spring环境下MyBatis支持多个Datasource参考实现
- Spring MVC @ResponseBody 中文乱码解决
- OpenCV视频的读取
- oracle动态性能视图