Prayer

在一般中寻求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

shell中字符处理的小使用 截断字符串

Posted on 2009-08-28 13:29 Prayer 阅读(677) 评论(0)  编辑 收藏 引用 所属分类: Shell
1:  shell 中比较好用的获得字符串的两个函数是basename 和dirname .其中basename得到具体文件名(或目录中的最后那部分),另外的部分可以由dirname得到:
  > basename /r/sanyo.unx.sas.com/vol/vol5/u51/scnyam/meiplaypen/mei_shell
 mei_shell
  > dirname /r/sanyo.unx.sas.com/vol/vol5/u51/scnyam/meiplaypen/mei_shell
  /r/sanyo.unx.sas.com/vol/vol5/u51/scnyam/meiplaypen
2: 但是这种处理显然无法满足所有类型字符串的截取要求。 不过不用担心,bash本身有它截取字符串的简单方法:
   我们来看下面的例子:
   var=PeterPiPerPickedofPick   # PeterPiperPickedaPeckofPickledPepper   (the famsous and classic tongue twister, coudl you speak it correctly and fluently??)
   > echo ${var#*Pe}          
     terPiPerPickedofPick
    > echo ${var##*Pe}         
     rPickedofPick
 
    > echo ${var%Pi*}
    PeterPiPerPickedof
    > echo ${var%%Pi*}
    Peter
 
 看到了吗? #是从左侧替换 进行替换,%是从右侧。为什么呢? 因为键盘上的位置是:#$%  即#在$的左边, %在$的右边。
 
 神秘吧?
 
 小例子:
 #!/bin/bash
if [ "${1##*.}" = "tar" ]
then
    echo This appears to be a tarball.
else
    echo At first glance, this does not appear to be a tarball.
fi
参考文章: 截断字符串概述, 位置找不到了。

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理