shell变量字符串截取

 

假设有变量

url=http://www.baidu.com/index.html

<1>#号截取----删除左边的字符,保留右边的字符

[root@MiWiFi-R3-srv ~]# echo "${url#*//}"
www.baidu.com/index.html

<2>##号截取----删除左边的字符,保留右边的字符

[root@MiWiFi-R3-srv ~]# echo "${url##*/}"
index.html

---->#号截取和##号截取的区别:

可以看到上面的变量值并不是只有1个单一的字符,如字母(w,i等等).#和##的区别就是在这里

[root@MiWiFi-R3-srv ~]# url=http://www.baidu.com/index.html
[root@MiWiFi-R3-srv ~]# echo "${url#*i}"
du.com/index.html
[root@MiWiFi-R3-srv ~]# echo "${url##*i}"
ndex.html

"#"是从找到的第一个对象开始截取(从左往右数)

"##"是从找到的最后一个对象开始截取(从左往右数)

<3>%号截取----删除右边的字符,保留左边的字符

[root@MiWiFi-R3-srv ~]# echo "${url%i*}"
http://www.baidu.com/

<4>%%号截取----删除右边的字符,保留左边的字符

[root@MiWiFi-R3-srv ~]# echo "${url%%i*}"
http://www.ba

---->注意:

注意运算符"*"的位置

注意"%"也是从找到的第一个对象开始截取。但是顺序是从右向左查找的

注意"%%"也是从找到的最后一个对象开始截取。但是顺序从右向左查找的

<5>从左边第几个字符开始,及字符的个数

[root@MiWiFi-R3-srv ~]# echo "${url:0:2}"
ht

---->0表示的是开始位置,逻辑相当于Python的列表索引

[root@MiWiFi-R3-srv ~]# echo "${url:2}"
tp://www.baidu.com/index.html

从索引位置到结尾

<6>从右边的第几个字符开始,及字符的个数

[root@MiWiFi-R3-srv ~]# echo "${url:0-4:4}"
html

---->"0-4"表示从右向左第四个字符开始,"4"表示字符的个数(从左到右的)

[root@MiWiFi-R3-srv ~]# echo "${url:0-7}"
ex.html

---->从"0-7"的位置到结尾

 

posted @ 2017-10-30 17:35  畅优植物乳杆菌  阅读(343)  评论(0编辑  收藏  举报