shell 中截取字符串
aaaa、#和%表示的是匹配删除
001、 # 表示从左侧删除匹配的字符, 单个#号表示非贪婪匹配, 两个#号表示贪婪匹配
[root@PC1 test]# ls [root@PC1 test]# var=http://www.aaa.com/123.htm ## 测试字符串 [root@PC1 test]# echo $var http://www.aaa.com/123.htm [root@PC1 test]# echo ${var#*/} ## #号表示从左侧匹配,单个#号表示非贪婪匹配 /www.aaa.com/123.htm [root@PC1 test]# echo ${var##*/} ## #号表示从左侧匹配,两个#号表示贪婪匹配 123.htm
002、%表示从右侧删除匹配字符,单个非贪婪, 双个贪婪
[root@PC1 test]# ls [root@PC1 test]# var=http://www.aaa.com/123.htm [root@PC1 test]# echo $var http://www.aaa.com/123.htm [root@PC1 test]# echo ${var%/*} ## %号表示右侧, 单个表示非贪婪 http://www.aaa.com [root@PC1 test]# echo ${var%%/*} ## 贪婪 http:
bbbbb、/和
/号表示从左侧开始替换, 非贪婪, //号表示贪婪
[root@PC1 test]# ls [root@PC1 test]# var=www.aaa.com/123.htm [root@PC1 test]# echo $var www.aaa.com/123.htm [root@PC1 test]# echo ${var/a/M} ## 左侧替换,非贪婪 www.Maa.com/123.htm [root@PC1 test]# echo ${var//a/M} ## 左侧替换, 贪婪 www.MMM.com/123.htm
ccc、利用数字截取:
[root@PC1 test]# ls [root@PC1 test]# var=www.aaa.com/123.htm [root@PC1 test]# echo $var www.aaa.com/123.htm [root@PC1 test]# echo ${var:0:3} www [root@PC1 test]# echo ${var:0:5} www.a
dddd、
[root@PC1 test]# ls [root@PC1 test]# echo $var www.aaa.com/123.htm [root@PC1 test]# echo ${var:3} .aaa.com/123.htm [root@PC1 test]# echo ${var:2:3} w.a
eee、
[root@PC1 test]# echo $var www.aaa.com/123.htm [root@PC1 test]# echo ${var:0-2} ## 从右侧截取字符 tm [root@PC1 test]# echo ${var:0-4} .htm [root@PC1 test]# echo ${var:0-6} 23.htm
fff、
[root@PC1 test]# ls [root@PC1 test]# echo $var www.aaa.com/123.htm [root@PC1 test]# echo ${var:0-5} 3.htm [root@PC1 test]# echo ${var:0-5:1} ## 先截取区间, 在提取 3 [root@PC1 test]# echo ${var:0-5:3} 3.h
参考:https://blog.csdn.net/Wis57/article/details/128719096