###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