shell脚本的8种字符串截取方法

来源:互联网 发布:分布式通信 java 编辑:程序博客网 时间:2024/05/17 21:53

shell脚本的截取有8种,今天我们以https://www.baidu.com/123.htm 为例:

1、# 删除左边字符,保留右边字符

val="https://baidu.com/123.htm"echo ${val#*//}

结果:www.baidu.com/123.htm

2、## 删除左边字符,保留右边字符

val="https://baidu.com/123.htm"echo ${val##*/}

结果: 123.htm

解释 # 和## 的区别:

#是从字符最边开始匹配删除第一个和字符串匹配的字符及其边的所有字符
##是从字符最边开始匹配字符,删除第一个相同字符串及其边所有的字符
#和##在使用时需要 * 配合使用,表示所有

3、%截取删除右边、保留左边

val="https://baidu.com/123.htm"echo ${val%*/}

结果:https://www.baidu.com

4、 %%截取删除右边,保留左边

val="https://www.baidu.com/123.htm"echo ${val%%*/}

结果:https:
对比% %%

%是从字符最边开始匹配删除第一个和字符串匹配的字符及其边的所有字符
%%是从字符最边开始匹配字符,删除第一个相同字符串及其边所有的字符
同样% %%也需要配合 *

5、保留 从左边开始的第几个字符的几个字符

val="https://www.baidu.com/123.htm"echo ${val:0:8}

结果:https://

6、保留 从左边开始一直到结束的字符

val="https://www.baidu.com/123.htm"echo ${val:8}

结果:www.baidu.com/123.htm

7、保留 从右边开始的第几个字符的几个字符

val="https://www.baidu.com/123.htm"echo ${val:0-7:3}

结果:123

0-7是从右边开始的第7个字符开始,3是保留往右数3个字符

8、保留 从右边第n个开始到结束的所有字符

val="https://www.baidu.com/123.htm"echo ${val:0-7}

结果:123.htm