文章大纲

shell字符串截取、替换和删除

2019年12月15日 00:44


网上有很多详细教程,我也就照着实践了一下,本文就不重复那些细节了,也就稍作一下记忆总结。


符号记忆:

截取   :

替换   /

删除左边  #

删除右边  %


记忆诀窍:截取用冒号,简称截冒,谐音睫毛。 #左百分号右边,简称井左百右,部分谐音”白柚“,记住右边了,左边自然也就能区分了

其中替换和删除,还涉及贪婪模式,代表符号连用两次即可。


本文是翟码农个人博客蓝翟红尘里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,贪婪模式,从右删除所有匹配部分


个人实践之后,仍有一些注意事项:

1. 截取字符的位置,第几个字符,则其之后的位置就是第几。

例如截取helloworld中的第一个o字母,因为在第4个字符l之后,所以就可以写成${a:4:1}


2.从右边删除,匹配部分必须是匹配到字符串结尾的。

例如:

上面示例里把有删除里.*改成左删除那样,写成*.,就会发现无法实现右边删除的效果,因为字符串不是以点号结尾的,也就是不存在匹配部分。


此种情况,不要理解成,从右开始匹配,仅删除第一次匹配部分,即 

${a%%*.}

的截取结果,不会是你错误理解的blog.com(删除从右第一次匹配部分zhai14.)



更详细的教程,请参考:CSDN:shell教程(4)变量(二):字符串变量截取、替换和删除





  • 2019年12月14日 23:53文章创建
  • 2019年12月15日 00:44文章发布
我要评论
«-必填,限2-20个字符,中文/字母/字母数字组合
«-评论后,邮箱会收到激活链接,未激活邮箱的留言,将无法显示
评论列表
暂无评论,期待你的评论哦!
回到顶部