网上有很多详细教程,我也就照着实践了一下,本文就不重复那些细节了,也就稍作一下记忆总结。
截取 :
替换 /
删除左边 #
删除右边 %
记忆诀窍:截取用冒号,简称截冒,谐音睫毛。 #左百分号右边,简称井左百右,部分谐音”白柚“,记住右边了,左边自然也就能区分了
其中替换和删除,还涉及贪婪模式,代表符号连用两次即可。
本文是翟码农个人博客蓝翟红尘里linux分类下的文章,转载请注明出处:http://www.zhai14.com/blog/221a7a844c4bb183bbccda06fe3b4984.html
下面直接贴几个例子,辅助理解。
a='blog.zhai14.com' ${a:0:1} b,从0位置开始截取一个字符 ${a:0-3:2} co,从倒数第三位置截取2个字符 ${a/blog/test} test.zhai14.com, 替换 ${a/./-} blog-zhai14.com,替换第一个点 ${a//./-} blog-zhai14-com, 贪婪模式,替换所有点 ${a#*.} zhai14.com,从左删除首次匹配部分blog. ${a##*.} com,贪婪模式,从左删除所有匹配部分 ${a%.*} blog.zhai14, 从右边删除首次匹配的部分.com ${a%%.*} blog,贪婪模式,从右删除所有匹配部分
个人实践之后,仍有一些注意事项:
例如截取helloworld中的第一个o字母,因为在第4个字符l之后,所以就可以写成${a:4:1}
例如:
上面示例里把有删除里.*改成左删除那样,写成*.,就会发现无法实现右边删除的效果,因为字符串不是以点号结尾的,也就是不存在匹配部分。
此种情况,不要理解成,从右开始匹配,仅删除第一次匹配部分,即
${a%%*.}
的截取结果,不会是你错误理解的blog.com(删除从右第一次匹配部分zhai14.)
更详细的教程,请参考:CSDN:shell教程(4)变量(二):字符串变量截取、替换和删除