Shell操作字符串
1、字符串截取
Linux中操作字符串,也是一项必备的技能。其中尤以截取字符串更加频繁,下面为大家介绍几种常用方式,截取字符串
1、#截取,删除左边字符串(包括制定的分隔符),保留右边字符串
预先定义一个变量:WEBSITE=‘http://hadoop//centos/huangbo.html’
[root@hadoop ~]# echo ${WEBSITE#*//}
结果:hadoop//centos/huangbo.html
2、##截取,删除左边字符串(包括指定的分隔符),保留右边字符串,和上边一个#不同的是,它一直找到最后,而不是像一个#那样找到一个就满足条件退出了。
[root@hadoop ~]# echo ${WEBSITE##*//}
结果:centos/huangbo.html
3、%截取,删除右边字符串(包括制定的分隔符),保留左边字符串
[root@hadoop ~]# echo ${WEBSITE%//*}
结果:http://hadoop
4、%%截取,删除右边字符串(包括指定的分隔符),保留左边字符串,和上边一个%不同的是,它一直找到最前,而不是像一个%那样找到一个就满足条件退出了。
[root@hadoop ~]# echo ${WEBSITE%%//*}
结果:http:
总结以上四种方式:
#去掉左边,最短匹配模式, ##最长匹配模式。
% 去掉右边,最短匹配模式, %%最长匹配模式
5、从左边第几个字符开始,以及截取的字符的个数
[root@hadoop ~]# echo ${WEBSITE:2:2}
结果:tp
6、从左边第几个字符开始,一直到结束
[root@hadoop ~]# echo ${WEBSITE:2}
结果:tp://hadoop//centos//huangbo.html
7、从右边第几个字符开始,以及字符的个数
[root@hadoop ~]# echo ${WEBSITE:0-4:2}
结果:ht
8、从右边第几个字符开始,一直到结束
[root@hadoop ~]# echo ${WEBSITE:0-4}
结果:html
9、利用awk进行字符串截取
[root@hadoop ~]# echo $WEBSITE | awk '{print substr($1,2,6)}'
结果:ttp://
10、利用cut进行字符串截取
[root@hadoop ~]# echo $WEBSITE | cut -b 1-4
http
[root@hadoop ~]# echo $WEBSITE | cut -c 1-4
http
[root@hadoop ~]# echo $WEBSITE | cut -b 1,4
hp
[root@hadoop ~]# echo $WEBSITE | cut -c 1,4
hp
11、获取最后几个字符
[root@hadoop ~]# echo ${WEBSITE:(-3)}
结果:tml
12、截取从倒数第3个字符后的2个字符
[root@hadoop ~]# echo ${WEBSITE:(-3):2}
结果:tm
13、expr截取
2、字符串替换
使用格式:
${parameter/pattern/string}
例子:
定义变量VAR:
[linux@linux ~]$ VAR="hello tom, hello kitty, hello xiaoming"
替换第一个hello:
[linux@linux ~]$ echo ${VAR/hello/hi}
hi tom, hello kitty, hello xiaoming
替换所有hello:
[linux@linux ~]$ echo ${VAR//hello/hi}
hi tom, hi kitty, hi xiaoming
3、获取字符串长度
在此为大家提供五种方式获取某字符串的长度
1、使用wc -L命令
[root@hadoop ~]# echo ${WEBSITE} |wc -L
35
2、使用expr的方式去计算
[root@hadoop ~]# expr length ${WEBSITE}
35
3、通过awk + length的方式获取字符串长度
[root@hadoop ~]# echo ${WEBSITE} | awk '{print length($0)}'
35
4、通过awk的方式计算以""分隔的字段个数
[root@hadoop ~]# echo ${WEBSITE} |awk -F "" '{print NF}'
35
5、通过#的方式获取字符串(最简单,最常用)
[root@hadoop ~]# echo ${#WEBSITE}
35