Linux云计算交流群:720995729

linux command

字符串切片

${变量:位置起点}

指定从变量的哪个位置(索引)开始,截取到字符串结束,字符串的索引从0开始。

${变量:位置起点}

实例一:从指定位置开始截取所有字符串:

[root@www.lutixia.cn ~]# name=lutixia
[root@www.lutixia.cn ~]# echo ${name:2}
tixia

从字符串的第3个字符开始截取,一直截取到字符串结束。

${变量:位置起点:长度}

指定从变量的哪个位置开始,截图指定长度的子字符串。

${变量:位置起点:长度}

实例二:从指定位置开始截取指定长度字符串:

[root@www.lutixia.cn ~]# name=lutixia
[root@www.lutixia.cn ~]# echo ${name:2:2}
ti

通过样式对比切片:

删除前面的字符串:

# 从左边开始,对比变量值,删除最短的符合的字符串:
${变量#样式}

# 从左边开始,对比变量值,删除最长的符合的字符串:
${变量##样式}

${变量#样式} 删除最短的:

[root@www.lutixia.cn ~]# path=/usr/local/nginx
[root@www.lutixia.cn ~]# echo ${path#/*r}
/local/nginx

上面的范例就是通过/*r样式去比path变量对比。从左边开始,删除最符合的最短的字符串,这样就取到了/usr,然后就返回了/local/nginx字符串。

${变量##样式} 删除最长的:

[root@www.lutixia.cn ~]# path=/usr/local/nginx
[root@www.lutixia.cn ~]# echo ${path##/*/}
nginx

上面的范例就是通过/*/样式去比path变量对比。从左边开始,删除最符合的最长的字符串,这样就取到了/usr/local/,然后就返回了nginx字符串。

删除后面的字符串:

${变量%样式} 删除最短的:

[root@www.lutixia.cn ~]# site=www.lutixia.cn
[root@www.lutixia.cn ~]# echo ${site%.*}
www.lutixia

上面的范例就是通过.*样式去与site变量对比。从右边开始,删除最符合的最短的字符串,这样就得到了www.lutixia字符串。

需要注意的是这里.,就是普通的点,不是正则里面的可以匹配任意单个字符的点。

${变量%%样式} 删除最长的:

[root@www.lutixia.cn ~]# site=www.lutixia.cn
[root@www.lutixia.cn ~]# echo ${site%%.*}
www

上面的范例就是通过.*样式去与site变量对比。从右边开始,删除最符合的最长的字符串,这样就得到了www字符串。

平时习惯了用awk的,也可以用下面的命令获取:

[root@www.lutixia.cn ~]# site=www.lutixia.cn
[root@www.lutixia.cn ~]# echo $site |awk -F. '{print $1}'
www

平时习惯了用sed的,也可以用下面的命令获取:

[root@www.lutixia.cn ~]# site=www.lutixia.cn
[root@www.lutixia.cn ~]# echo $site |sed 's/\..*//'
www

平时习惯了用cut的,也可以用下面的命令获取:

[root@www.lutixia.cn ~]# site=www.lutixia.cn
[root@www.lutixia.cn ~]# echo $site | cut -d. -f1
www

方法很多,相比之下,还是第一种简单明了,不需要引用其他命令实现。

标签: shell编程, linux教程

添加新评论