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

 

posted @ 2023-05-28 00:10  小鲨鱼2018  阅读(19)  评论(0编辑  收藏  举报