课程章节: 第2章 shell编程基础:2-9 Shell中的字符串处理(课程链接:https://coding.imooc.com/lesson/549.html#mid=50185)
主讲老师: 沈奇才
课程内容:shell编程实战与Linux运维基础--初始shell编程
课程收获:
1、获取字符串长度:用法:${#变量},shell里面取字符串长度意思是字符数没有字节的区别,1个汉字长度就是1):
var=xxxxxyyyyssss
echo "${#var}" ####长度是13
var2="中文长度"
echo "${#var2}" ####长度是4
2、字符串的截取(类似于sql里面的substr()函数或者python里面的切片s[2:10])
用法:${变量:起始位置:长度},起始位置从0开始数,如果不指定长度则默认一直取到最后,例如${var:2:3} 代表从第3个位置连续取3个字符
[zhang@localhost shell_with]$ var=abcdefgh
[zhang@localhost shell_with]$ echo "${var:2:3}"
cde ###结果
[zhang@localhost shell_with]$ echo "${var:2}" ###从第三个位置一直往后取字符串直到结束
cdefgh ###结果
3、删除某个子串,有多种写法:#、##、%、%%(均只能从头开始匹配)
#和##是从左开始删除匹配:${变量#匹配的字符串}
%和%%是从右开始删除匹配:${变量%匹配的字符串}
#和##的区别:#是最小匹配,##是最大匹配,如
[zhang@localhost shell_with]$ var=abcdefghasfasidgajslfjas
[zhang@localhost shell_with]$ echo "${var#a*j}"
slfjas
[zhang@localhost shell_with]$ echo "${var##a*j}"
as
4、替换:${变量/替换前的字符串/替换后的字符串} 或者${变量//替换前的字符串/替换后的字符串}
区别:/局部替换,之替换第一个匹配上的;//全局替换
将如果替换后的字符串置空,则就是删除的意思