51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1621|回复: 1
打印 上一主题 下一主题

[原创] 字符串截取求助

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2011-5-20 14:16:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
# a=123456789
# echo $a
123456789
# b=$(echo $a|awk '{print substr($1,5,1)}')
# echo $b
5
# i=8
# echo $i
8
# b=$(echo $a|awk '{print substr($1,$i,1)}')
# echo $b

#
也就是b并没有截取到值,有没有高手来解答下,如何用$i的形式来截取字符(这个除了除法来解决),谢谢!!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    2#
    发表于 2011-5-28 15:51:43 | 只看该作者
    本帖最后由 msnshow 于 2011-5-28 15:54 编辑

    看看这个http://blog.myspace.cn/e/404570729.htm

    一、Linux shell 截取字符变量的前8位,有方法如下:
    1.expr substr “$a” 1 8
    2.echo $a|awk ‘{print substr(,1,8)}’
    3.echo $a|cut -c1-8
    4.echo $
    5.expr $a : ‘\(.\\).*’
    6.echo $a|dd bs=1 count=8 2>/dev/null

    二、按指定的字符串截取
    1、第一种方法:
    ${varible##*string} 从左向右截取最后一个string后的字符串
    ${varible#*string}从左向右截取第一个string后的字符串
    ${varible%%string*}从右向左截取最后一个string后的字符串
    ${varible%string*}从右向左截取第一个string后的字符串
    “*”只是一个通配符可以不要

    例子:
    $ MYVAR=foodforthought.jpg
    $ echo ${MYVAR##*fo}
    rthought.jpg
    $ echo ${MYVAR#*fo}
    odforthought.jpg

    2、第二种方法:${varible:n1:n2}:截取变量varible从n1到n2之间的字符串。

    可以根据特定字符偏移和长度,使用另一种形式的变量扩展,来选择特定子字符串。试着在 bash 中输入以下行:
    $ EXCLAIM=cowabunga
    $ echo ${EXCLAIM:0:3}
    cow
    $ echo ${EXCLAIM:3:7}
    abunga

    这种形式的字符串截断非常简便,只需用冒号分开来指定起始字符和子字符串长度。

    三、按照指定要求分割:
    比如获取后缀名
    ls -al | cut -d “.” -f2

    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-22 11:17 , Processed in 0.068135 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表